Qu'est-ce que JWT ?
JWT (JSON Web Token, prononce "jot") est un standard ouvert (RFC 7519) pour la creation de jetons d'acces securises. Un JWT permet de transmettre des informations de maniere compacte et auto-contenue entre deux parties sous forme de JSON signe numeriquement. Les JWT sont largement utilises pour l'authentification et l'autorisation dans les API web modernes.
Structure d'un JWT
Un JWT est compose de trois parties separees par des points : Header (algorithme de signature et type de token), Payload (les claims, c'est-a-dire les donnees transportees), et Signature (verification de l'integrite). Chaque partie est encodee en Base64URL. Le Header specifie l'algorithme (HS256 pour HMAC-SHA256, RS256 pour RSA-SHA256). Le Payload contient des claims standard (iss, sub, exp, iat, aud) et des claims personnalisees (role, permissions). La Signature est calculee sur le header et le payload avec une cle secrete ou une paire de cles publique/privee.
Fonctionnement avec les API
Le flux d'authentification typique : le client envoie ses identifiants (login/password), le serveur verifie et genere un JWT signe, le client stocke le token et l'inclut dans chaque requete suivante via le header Authorization: Bearer
Securite et bonnes pratiques
Les bonnes pratiques de securite incluent : definir un temps d'expiration court (15-60 minutes pour les access tokens), utiliser des refresh tokens (stockes en httpOnly cookie) pour renouveler les access tokens, ne jamais stocker de donnees sensibles dans le payload (il est decode, pas chiffre), utiliser RS256 (asymetrique) plutot que HS256 pour les architectures distribuees, et valider systematiquement la signature, l'expiration et l'audience. Les tokens ne sont pas revocables individuellement sans maintenir une blacklist, ce qui est une limitation importante.
Alternatives et complements
Les alternatives incluent les sessions cote serveur (plus simples, revocables, mais necessitent un store partage), OAuth 2.0 (protocole complet d'autorisation deleguee utilisant souvent des JWT), et les PASETO (Platform-Agnostic Security Tokens, alternative plus securisee par conception). En pratique, les JWT sont souvent utilises au sein d'un flux OAuth 2.0, le JWT etant le format du token delivre par le serveur d'autorisation.