Bonne pratique3 min de lecture · Mis à jour le 29 sept. 2026

JWT et sessions — bonnes pratiques de sécurité

Utiliser les JWT sans les pièges classiques : durée de vie, stockage, rotation des refresh tokens, validation stricte et révocation.

  • #tls
  • #mfa
  • #least-privilege

Rappel

Un JWT = en-tête.charge.signature encodés en base64url. Il est signé, pas chiffré : n'y mettez aucune donnée sensible.

Validation stricte côté serveur

  • Algorithme imposé (RS256/EdDSA/HS256 selon le cas) ; refuser alg: none et toute confusion RS/HS.
  • Vérifier exp, nbf, iss, aud.
  • Tolérance d'horloge limitée (≤ 60 s).

Durées de vie

JetonDuréeStockage
Access token5 à 15 mincookie HttpOnly; Secure; SameSite=Lax ou mémoire
Refresh tokenjours/semainescookie HttpOnly au chemin restreint (/auth)

Évitez localStorage : tout XSS permet de voler le jeton.

Rotation des refresh tokens

  1. Chaque utilisation d'un refresh token en émet un nouveau et invalide l'ancien.
  2. Stockez les refresh tokens hachés en base avec une famille.
  3. Détection de réutilisation : si un refresh token déjà utilisé est présenté, révoquez toute la famille (vol probable) et forcez la reconnexion.

Révocation

Un JWT d'accès reste valide jusqu'à exp. Pour une révocation immédiate (désactivation de compte, changement de mot de passe) : durée courte + vérification d'un compteur de version de session ou liste de révocation en cache.

CSRF

Les cookies partent automatiquement : protégez les mutations par SameSite et un en-tête personnalisé ou un jeton CSRF.

Checklist

  • Secrets de signature ≥ 256 bits, stockés hors du code, rotation planifiée (kid).
  • Déconnexion = révocation serveur du refresh token.
  • Journalisation des événements d'authentification (succès, échecs, réutilisation détectée).
  • MFA pour les comptes à privilèges.

Autres labs de cette technologie