Tengo un esquema de autenticación y autorización personalizado basado en tres tokens JWT: token de referencia (opaco), token de acceso y token de actualización. El backend establece el token de referencia en una cookie y lo envía con cada solicitud al servidor.
Desde entonces, estoy usando cookies, necesito prevenir el ataque CSRF. He escrito este subproceso SO y este artículo stormpath , pero todavía no obtengo el flujo de trabajo, que debo seguir para prevenir el ataque CSRF.
Mi carga útil del token de referencia es similar a
{
"iss": "http://galaxies.com",
"exp": 1300819380,
"scopes": ["explorer", "solar-harvester", "seller"],
"sub": "[email protected]",
"jti": "d9b9714c-7ac0-42e0-8696-2dae95dbc33e"
}
en lugar de la propiedad xsrfToken
, estoy usando un campo estándar jti
. Entonces, mi cliente tiene este token de referencia con este campo jti
, este token de referencia se envía al servidor con cada solicitud, el servidor puede decodificar este token de referencia y encontrar el token de acceso correspondiente al valor jti
en su caché. Ahora me pregunto si este esquema me impide los ataques CSRF o ¿debo hacer algunos pasos adicionales en el lado del servidor y del lado del cliente para hacer esto?
Lo que realmente no entiendo es por qué debo establecer un nuevo encabezado X-XSRF-TOKEN
en el lado del servidor y qué debo hacer con este encabezado más adelante.