Skip to content

Bug de mise à jour de l'interface en cas d'expiration du cookie d'authentification #142

@ddZ6ii

Description

@ddZ6ii

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions