-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Contexte
Actuellement, aucune durée d'expiration n'est configurée sur le cookie d'authentification contrairement aux recommendations de sécurité de l'ANSSI. Le cookie actuel a une durée de "session" (valeur par défaut, supprimé uniquement si fermeture du navigateur
La logique actuelle de MàJ de l'interface fonctionne en cas de JWT invalide.
Deux options possibles:
- Mettre en place un système de refresh token
- OU transmettre de l'information supplémentaire dans les headers de la requête (apollo client set context link
x-isAuthenticated) pour transmettre l'état précédent de connexion et différencier la logique métier.
Spécifications
L'objectif est de configurer le cookie d'authentification avec une durée de validité synchronisée sur celle du JWT:
new Cookies(context.req, context.res).set('access_token', token, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'strict',
...(expiresIn !== null && { maxAge: expiresIn * 1000 }),
})
Modifier la logique front (session storage + apollo client set context link x-isAuthenticated) et back pour transmettre l'état précédent de connexion et différencier la logique métier.
En cas de cookie périmé pour un utilisateur précédemment connecté, le back doit "forcer" la déconnexion (sans poursuivre les autres actions) et l'interface utilisateur doit être correctement mis à jour (toast + header).
Critères d'acceptation
- ETU connecté, je dois être correctement déconnecté si mon cookie d'authentification et/ou JWT est périmé, et ce dès que je réalise une action.
- Un message "Votre session a expiré. Veuillez vous reconnecter." est affiché via une notification toast.
- L'utilisateur est re-dirigé vers l'url
/editor.