Décodeur JWT
Lisez, contrôlez et vérifiez des JSON Web Tokens dans votre navigateur
Qu'est-ce qu'un JWT ?
Un JSON Web Token est un moyen compact de transmettre des
informations signées entre systèmes, le plus souvent pour prouver
l'identité d'un utilisateur après sa connexion. Il ressemble à trois
blocs de texte reliés par des points :
header.payload.signature.
- En-tête : Le type de jeton et l'algorithme de signature, comme HS256 ou RS256
- Payload : Les claims, c'est-à-dire les données transportées, comme un identifiant utilisateur, des rôles et une date d'expiration
- Signature : La preuve que l'en-tête et le payload ont été créés par le détenteur de la clé et n'ont pas été modifiés
L'en-tête et le payload sont seulement encodés en Base64URL, pas chiffrés. Toute personne qui possède le jeton peut les lire : ne placez jamais de mot de passe ou d'autre secret dans un JWT.
Comment décoder un JWT
Étape 1 : Collez le jeton
Copiez le jeton depuis les outils de développement de votre
navigateur, un en-tête Authorization ou les logs de votre
application, puis collez-le dans la zone Encoded token. Un préfixe
Bearer est retiré automatiquement. Cliquez sur « Sample »
pour essayer un jeton de démonstration.
Étape 2 : Lisez l'en-tête et le payload
Le jeton est décodé dès que vous le collez. Ses trois parties sont colorées en rouge, violet et cyan pour voir où chacune commence, et l'en-tête et le payload s'affichent en JSON formaté.
Étape 3 : Contrôlez les claims
Le panneau Claims liste les claims enregistrés en langage clair et
convertit exp, iat et nbf de
timestamps Unix en date et heure locales, avec une durée relative
comme « in 2 hours » (dans 2 heures). La ligne d'état vous avertit si le jeton a
expiré ou n'est pas encore valide.
Étape 4 : Vérifiez la signature
Saisissez la clé et cliquez sur Verify. Pour HS256, HS384 et HS512,
il s'agit du secret partagé ; cochez « Secret is Base64 encoded » s'il
est stocké ainsi. Pour les algorithmes RS, PS et ES, collez la clé
publique au format PEM, commençant par
-----BEGIN PUBLIC KEY-----. Vous voyez si la signature est
valide, ou un message qui explique pourquoi elle n'a pas pu être
vérifiée.
Les claims enregistrés
- iss (émetteur) : Qui a créé le jeton, par exemple votre serveur d'authentification
- sub (sujet) : La personne concernée, généralement un identifiant utilisateur
- aud (audience) : Le service auquel le jeton est destiné
- exp (expiration) : Le moment où le jeton cesse d'être valide
- nbf (pas avant) : Le moment où le jeton devient valide
- iat (émis le) : Le moment où le jeton a été créé
- jti (identifiant) : Un identifiant unique, utile pour révoquer un jeton précis
HS256, RS256 ou ES256 ?
HS256 utilise un seul secret partagé pour signer et vérifier : chaque service qui vérifie les jetons peut donc aussi en créer. RS256 et PS256 utilisent une paire de clés RSA : seul le serveur d'authentification détient la clé privée, et n'importe qui peut vérifier avec la clé publique. ES256 fait de même avec des clés à courbe elliptique, pour des signatures beaucoup plus courtes. Pour un système composé de plusieurs services, un algorithme asymétrique est généralement le choix le plus sûr.
Conseils de sécurité
- Vérifiez toujours la signature côté serveur : décoder ne prouve rien
- Refusez les jetons avec
alg: "none", et imposez l'algorithme attendu au lieu de faire confiance à l'en-tête - Gardez des durées d'expiration courtes et contrôlez
exp,nbfetaudà chaque requête - Ne collez des jetons de production que dans des outils qui fonctionnent localement, comme celui-ci
Confidentialité
Le décodage et la vérification utilisent l'API Web Crypto intégrée à votre navigateur. Les jetons et les clés ne sont jamais envoyés ni enregistrés, et disparaissent à la fermeture de l'onglet.
Conclusion
Que vous déboguiez un parcours de connexion ou cherchiez pourquoi une API refuse un jeton, le Décodeur JWT affiche le contenu, l'expiration et l'état de la signature au même endroit. Essayez-le sur tools.typinks.com/jwt-decoder.
Un jeton à inspecter ?
Collez-le et voyez immédiatement ses claims et son expiration.
Lancer le décodeur JWT