Oauth code code flow: genera il valore "state"

1

Sto lavorando su client che implementano il flusso OAuth2 "auth code". Sto cercando di trovare il modo migliore per generare (e ricontrollare) il parametro "stato" per impedire attacchi CSRF al flusso di login. Non riesco a memorizzare il valore di stato lato server e collegarlo a un ID sessione utente poiché non desidero affinità di sessione. Sto considerando quanto segue:

  • Genera un NONCE appropriato e impostalo come cookie di sessione tra il browser dell'utente finale e l'applicazione client. Salva un timestamp insieme a quello NONCE.
  • Lato applicazione client, calcola lo "stato" come hash (SHA2) del nonce + timestamp + un segreto salt. Sto considerando il segreto del client OAuth come il segreto salt, dal momento che è l'unico segreto distribuito a tutte le istanze delle applicazioni client.
  • Quando si riceve il codice di autenticazione alla fine del flusso, l'app client controlla il nonce dal cookie con il timestamp, controlla il timeout e ricalcola l'hash utilizzando il segreto del client, per confrontarlo con il parametro di stato. Il codice è accettato solo se lo stato corrisponde all'hash e non esiste il timeout.

La mia domanda:

  1. Sembra un modo corretto per generare lo "stato"?
  2. Sto prendendo rischi di divulgazione usando il mio segreto del cliente come un salato all'operazione di hash?

Grazie per il tuo aiuto.

    
posta Francois Connetable 22.06.2017 - 10:59
fonte

0 risposte

Leggi altre domande sui tag