Ho uno schema di autenticazione e autorizzazione personalizzato basato su tre token JWT: token di riferimento (opaco), token di accesso e token di aggiornamento. Il backend imposta il token di riferimento in un cookie e lo invia ad ogni richiesta al server.
Poiché, sto usando i cookie, ho bisogno di prevenire l'attacco CSRF. Ho scritto questo SO thread e questo articolo di stormpath , ma non riesco ancora a ottenere il flusso di lavoro, che dovrei seguire per prevenire l'attacco CSRF.
Il mio payload del token di riferimento è simile a
{
"iss": "http://galaxies.com",
"exp": 1300819380,
"scopes": ["explorer", "solar-harvester", "seller"],
"sub": "[email protected]",
"jti": "d9b9714c-7ac0-42e0-8696-2dae95dbc33e"
}
solo una proprietà xsrfToken
, sto usando un campo standard jti
. Quindi, il mio cliente ha questo token di riferimento con questo campo jti
, questo token di riferimento viene inviato al server ad ogni richiesta, il server può decodificare questo token di riferimento e trovare da jti
il valore corrispondente token di accesso nella sua cache. Ora mi chiedo se questo schema mi impedisce attacchi CSRF o dovrei fare alcuni passaggi aggiuntivi sul lato server e lato client per fare questo?
Quello che non capisco è perché dovrei impostare un nuovo X-XSRF-TOKEN
di intestazione sul lato server e cosa dovrei fare con questa intestazione in seguito.