Sto tentando di convalidare un token JWT ricevuto da Windows Azure. Sto seguendo la documentazione qui: link
Quando richiedi un token, Azure ti fornisce un nonce e il token JWT restituito contiene il nonce che hai inviato e devi assicurarti che corrisponda. Un problema comune in questa situazione è che il server è stateless e potrebbero esserci più server, quindi non è facile memorizzare il nonce per il confronto con il valore nel token quando viene ricevuto il token.
Ecco cosa intendo fare: quando reindirizzo il browser al link memorizzerò il nonce in un cookie. Quando il token viene ricevuto da Azure e il browser invia il token al mio server, otterrò anche il nonce nel cookie e posso confrontarlo per assicurarmi che corrisponda.
Questa è una soluzione facile al problema di dove memorizzare il nonce. Ma la domanda è: questa strategia è coerente con il modo in cui dovrebbe essere usato nonce? Dal momento che il nonce viene trasferito al / dal client, ciò interrompe la protezione offerta da nonce? Questo abiliterà gli attacchi di replay e renderà inutile il nonce? Per rispondere a queste domande ho bisogno di sapere che tipo di attacchi sto cercando di prevenire.
Quindi la domanda è, quali sono alcuni esempi di scenari di attacco di replay che il nonce è progettato per prevenire? L'attaccante è da qualche parte su Internet, nel qual caso è possibile utilizzare SSL per impedirgli di vedere alcuna comunicazione? Oppure l'attaccante si trova sullo stesso computer dell'utente, cioè, dopo che l'utente ha lasciato il computer, l'utente malintenzionato utilizza il computer e il browser che l'utente ha trascurato di chiudere?
Come funziona esattamente un attacco di replay?