Qu'est-ce qu'un JWT
Un JSON Web Token (JWT) est un standard ouvert (RFC 7519) pour transmettre des informations entre parties sous forme d'objet JSON signé numériquement. Très utilisé pour l'authentification dans les API et applications web.
Structure d'un JWT
- Header : type de token et algorithme de signature (HS256, RS256…)
- Payload : données JSON sur l'utilisateur et la session (sub, exp, iat, rôles…)
- Signature : hash cryptographique du header + payload, signé avec une clé secrète ou privée
Important : le payload est seulement encodé en Base64, pas chiffré. Ne stockez jamais de données sensibles comme des mots de passe dans le payload.
Algorithmes de signature
- HS256 : symétrique — même secret pour signer et vérifier
- RS256 : asymétrique — clé privée signe, clé publique vérifie
- ES256 : asymétrique avec courbes elliptiques — clés plus courtes, préféré dans les systèmes modernes
Bonnes pratiques de sécurité
- Exp court (15 min) pour les access tokens
- Refresh tokens séparés avec rotation
- Cookies HttpOnly + Secure + SameSite=Strict pour prévenir XSS
- Liste de révocation (JTI deny-list) ou rotation de clé