J'ai une application vue avec le backend Spring Boot 3.0.1 et je souhaite utiliser CSRF. Le frontend Vue et le backend Spring Boot sont servis par des systèmes différents. Je prévois d'utiliser un proxy inverse nginx pour atténuer le sujet CORS, mais ce problème se produit, que nginx soit impliqué ou non.
La première chose que fait mon application vue est de demander le jeton csrf, en le stockant globalement afin qu'il puisse être utilisé pendant la session utilisateur.
Lorsqu'un utilisateur se connecte, plusieurs magasins Pinia sont initialisés. Mais malheureusement, lors de ces requêtes, le cookie JSESSIONID envoyé à chaque requête est ignoré par le backend et un nouveau JSESSIONID est émis. Le JSESSIONID ne cesse de changer lors de l'utilisation de l'application et de l'envoi d'autres requêtes GET
Cela rend bien sûr invalide le jeton CSRF stocké "global" du JSESSIONID initial...
En-tête de requête "csrf" :
Titre « Connexion » :
Puis tout à coup, la 5ème requête a reçu un nouveau JSESSIONID même si j'ai envoyé le cookie JSESSIONID dans la requête (envoyé par le serveur - pourquoi ?
Pourquoi mes sessions changent-elles constamment ? Mon JSESSIONID ne devrait-il pas toujours rester le même ?
Quel est le but de la conduite du CSRF ? Demander un nouveau jeton avant de faire une demande (non-GET ?) ? (Le mien utilise les « informations d'identification : « même origine »)
J'avais
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
dans mon SecurityConfig, ce qui posait des problèmes... Pour autant que je sache, sa suppression a résolu l'utilisation du CSRF. p>