Décodeur et générateur de JWT
Collez un JSON Web Token pour lire son header et ses claims, voir quand il expire et vérifier sa signature. Votre jeton ne quitte pas cette page.
Intégrer ce calculateur à votre site
Copiez le code et collez-le dans le HTML de votre page. C'est gratuit ; merci de garder le lien vers la source.
Comment est construit un JWT
Un JSON Web Token (RFC 7519) est fait de trois chaînes Base64URL séparées par des points : header.payload.signature. Le header indique l'algorithme de signature, le payload contient les claims (ID utilisateur, rôles, expiration) et la signature est calculée sur les deux premières parties.
En HS256, la signature est un HMAC avec un secret partagé : le même secret signe et vérifie. RS256, PS256 et ES256 signent avec une clé privée et vérifient avec une clé publique, ce qui permet à de nombreux services de contrôler les jetons sans pouvoir en créer.
Vérifier un jeton en toute sécurité
- Vérifiez toujours la signature côté serveur et refusez alg "none".
- Imposez l'algorithme attendu au lieu de laisser le header choisir.
- Contrôlez exp, nbf, iss et aud, avec une ou deux minutes de tolérance d'horloge.
- Gardez des jetons de courte durée et traitez-les comme des mots de passe : ce décodeur fonctionne hors ligne, mais beaucoup d'autres envoient le jeton à un serveur.
Claims JWT enregistrés (RFC 7519)
| Claim | Nom | Signification |
|---|---|---|
iss | Émetteur | Qui a créé et signé le jeton |
sub | Sujet | Qui le jeton concerne, souvent un ID utilisateur |
aud | Audience | À qui le jeton est destiné |
exp | Expiration | Secondes depuis 1970 après lesquelles il doit être refusé |
nbf | Pas avant | Secondes depuis 1970 avant lesquelles il doit être refusé |
iat | Émis le | Date de création |
jti | ID du JWT | Identifiant unique contre la réutilisation |
Questions fréquentes
Tout le monde peut-il lire un JWT ?
Oui. Le header et le payload sont seulement encodés en Base64URL, pas chiffrés : quiconque a le jeton peut les lire. Ne mettez jamais de mot de passe ni de secret dans le payload.
Décoder un JWT prouve-t-il qu'il est valide ?
Non. Décoder ne fait que lire le contenu. Seule la vérification de la signature avec le bon secret ou la bonne clé publique prouve qu'il n'a été ni forgé ni modifié, et le serveur doit aussi contrôler exp, nbf et aud.
Pourquoi mon jeton est-il expiré alors qu'il vient d'être émis ?
exp, iat et nbf sont en secondes depuis 1970, pas en millisecondes. Utiliser Date.now() de JavaScript sans diviser par 1000 repousse la date de plusieurs millénaires, et les écarts d'horloge entre serveurs peuvent faire paraître un jeton neuf expiré ou pas encore valide.
Ce que je colle est-il envoyé à un serveur ?
Non. Cet outil fonctionne entièrement dans votre navigateur, avec JavaScript et l'API Web Crypto intégrée. Rien de ce que vous tapez, collez ou ouvrez n'est envoyé ni conservé.