Les tokens JWT expliqués : Structure, sécurité, bonnes pratiques
Les JSON Web Tokens apparaissent dans presque tous les systĂšmes d'authentification modernes. Cette longue chaĂźne dans votre en-tĂȘte Authorization â eyJhbGciOiJIUzI1NiIs... â est un JWT, et comprendre ce qu'il contient et comment il fonctionne est essentiel pour construire des applications sĂ©curisĂ©es.
Qu'est-ce qu'un JWT ?
Un JWT est un format de token compact et sĂ»r pour les URL qui transporte des revendications (donnĂ©es) entre deux parties. Il est auto-contenu â le token lui-mĂȘme contient les informations nĂ©cessaires pour vĂ©rifier son authenticitĂ© et extraire les donnĂ©es utilisateur, sans nĂ©cessiter de consultation de base de donnĂ©es.
DĂ©codez n'importe quel JWT instantanĂ©ment avec notre Encodeur/DĂ©codeur JWT. Collez un token et voyez son en-tĂȘte, sa charge utile et sa signature dĂ©composĂ©s.
Structure JWT : Trois parties
Chaque JWT a trois parties encodées en Base64URL séparées par des points :
header.payload.signature
En-tĂȘte
{
"alg": "HS256",
"typ": "JWT"
}
Spécifie l'algorithme de signature et le type de token.
Charge utile
{
"sub": "user123",
"name": "Alex Chen",
"role": "admin",
"iat": 1708963200,
"exp": 1709049600
}
Contient les revendications â les donnĂ©es rĂ©elles. Les revendications standard incluent sub (sujet), iat (Ă©mis le) et exp (expiration).
Signature
Créée en signant l'en-tĂȘte et la charge utile encodĂ©s avec une clĂ© secrĂšte. Cela empĂȘche la falsification â toute modification invalide la signature.
Comment fonctionne l'authentification JWT
- L'utilisateur se connecte avec ses identifiants
- Le serveur crée un JWT avec les revendications utilisateur et le signe
- Le serveur retourne le JWT au client
- Le client envoie le JWT dans l'en-tĂȘte Authorization pour les requĂȘtes suivantes
- Le serveur vĂ©rifie la signature et extrait les revendications â aucune requĂȘte en base de donnĂ©es nĂ©cessaire
Bonnes pratiques de sécurité
Vérifiez toujours la signature
Ne faites jamais confiance à un JWT sans vérifier sa signature. Décodez la charge utile avec notre Décodeur JWT pour inspecter les tokens pendant le développement, mais vérifiez toujours cryptographiquement en production.
Utilisez des temps d'expiration courts
Les JWT ne peuvent pas ĂȘtre rĂ©voquĂ©s une fois Ă©mis (contrairement aux tokens de session). Gardez les temps d'expiration courts (15 Ă 60 minutes) et utilisez des refresh tokens pour les sessions plus longues.
Choisissez le bon algorithme
- HS256 â HMAC avec SHA-256, clĂ© symĂ©trique. Simple, rapide, adaptĂ© aux applications mono-serveur
- RS256 â RSA avec SHA-256, clĂ©s asymĂ©triques. Meilleur pour les systĂšmes distribuĂ©s oĂč plusieurs services vĂ©rifient les tokens
- N'utilisez jamais "none" â La vulnĂ©rabilitĂ©
alg: "none"a causé des failles de sécurité réelles
Protégez la clé secrÚte
Votre clé de signature JWT est la clé maßtresse de votre systÚme d'authentification. Stockez-la de maniÚre sécurisée, effectuez une rotation périodique et ne l'exposez jamais dans le code cÎté client.
Ne stockez pas de données sensibles dans la charge utile
Les charges utiles JWT sont encodées en Base64, pas chiffrées. N'importe qui peut les décoder. N'incluez jamais de mots de passe, numéros de carte de crédit ou secrets.
Erreurs JWT courantes
- Ne pas valider l'expiration â VĂ©rifiez toujours la revendication
exp - Stocker les JWT dans localStorage â VulnĂ©rable aux attaques XSS. Utilisez plutĂŽt des cookies httpOnly
- Tokens surdimensionnĂ©s â Les JWT vont dans chaque en-tĂȘte de requĂȘte. Gardez les charges utiles lĂ©gĂšres
- Ne pas utiliser HTTPS â Les JWT envoyĂ©s en HTTP peuvent ĂȘtre interceptĂ©s
Questions fréquemment posées
Puis-je révoquer un JWT ?
Pas directement â les JWT sont sans Ă©tat. Les solutions de contournement incluent des temps d'expiration courts, des listes noires de tokens ou le changement de la clĂ© de signature (ce qui invalide tous les tokens).
Dois-je utiliser des JWT pour les sessions ?
Les JWT fonctionnent bien pour l'authentification API et les microservices. Pour les sessions web traditionnelles, les sessions cÎté serveur avec cookies sont souvent plus simples et plus sécurisées.
Quelle est la différence entre JWT et OAuth ?
OAuth est un framework d'autorisation. JWT est un format de token. OAuth peut utiliser des JWT comme tokens d'accÚs, mais ils résolvent des problÚmes différents.
Ressources connexes
- L'encodage Base64 expliquĂ© â comprenez l'encodage utilisĂ© par les JWT
- Comprendre la sĂ©curitĂ© JWT â plongĂ©e approfondie dans les vulnĂ©rabilitĂ©s
- Encodeur/DĂ©codeur JWT â dĂ©codez et crĂ©ez des JWT instantanĂ©ment
- GĂ©nĂ©rateur de hash â explorez les algorithmes derriĂšre les signatures JWT