Décodeur / vérificateur de JWT
Décodez le header et le payload d’un JWT, vérifiez sa signature et voyez quand il expire.
Ce qu’est un JSON Web Token
Un JSON Web Token (JWT) est une façon compacte et autonome de transporter un ensemble de claims — des affirmations comme « ceci est l’utilisateur 42 » ou « ce jeton expire à midi » — sous une forme vérifiable. Les JWT sont partout dans l’authentification moderne : après votre connexion, un serveur remet souvent à votre navigateur un JWT signé, et chaque requête ultérieure l’inclut pour que le serveur sache qui vous êtes sans rien consulter. Comme le jeton porte ses propres claims et sa signature, on le qualifie de « sans état » (stateless).
Un JWT, ce sont trois parties encodées en Base64URL et reliées par des points : header.payload.signature. Cet outil découpe et décode ces parties pour vous, affiche les claims sous une forme lisible et, si vous fournissez la clé de signature, vérifie que la signature est authentique.
Les trois parties
- Header : décrit comment le jeton est signé, surtout l’algorithme (« alg », p. ex. HS256 ou RS256) et le type de jeton.
- Payload : les claims eux-mêmes — un objet JSON avec des champs comme sub (sujet/utilisateur), exp (expiration), iat (émis le) et toute donnée personnalisée ajoutée par l’émetteur.
- Signature : une valeur cryptographique calculée sur le header et le payload avec un secret ou une clé privée. C’est ce qui rend un JWT fiable : changez un seul caractère du payload et la signature ne correspond plus.
Point crucial : le header et le payload sont seulement encodés, pas chiffrés. Quiconque possède le jeton peut les lire. La signature ne cache pas le contenu — elle prouve qu’il n’a pas été altéré. Ne mettez jamais de mots de passe ni de secrets dans le payload d’un JWT.
Vérifier la signature
Décoder un JWT vous dit ce qu’il affirme ; le vérifier vous dit s’il faut croire ces affirmations. La vérification recalcule la signature à partir du header et du payload avec une clé et vérifie qu’elle correspond. Il existe deux familles d’algorithmes, qui utilisent des types de clés différents :
- HMAC (HS256, HS384, HS512) : un schéma symétrique. Le même secret partagé signe et vérifie. Fournissez ce secret pour vérifier.
- RSA et ECDSA (RS256, PS256, ES256 et apparentés) : des schémas asymétriques. Une clé privée signe et une clé publique vérifie. Fournissez la clé publique au format PEM pour vérifier — vous n’avez jamais besoin de la clé privée seulement pour contrôler un jeton.
Cet outil détecte l’algorithme depuis le header automatiquement et vérifie entièrement dans votre navigateur avec la Web Crypto API, si bien que ni le jeton ni la clé ne sont jamais téléversés.
Lire les claims standard
Quelques noms de claim sont normalisés (on les appelle « registered claims »). L’outil les étiquette et convertit ceux basés sur le temps, des horodatages Unix bruts vers votre heure locale, avec un statut en langage clair pour voir d’un coup d’œil si un jeton est actif, expiré ou pas encore valide :
- exp — heure d’expiration : après ce moment, le jeton doit être rejeté.
- nbf — not before : le jeton n’est pas valide avant ce moment.
- iat — issued at : quand le jeton a été créé.
- iss — issuer : qui a créé le jeton.
- sub — subject : qui ou quoi le jeton concerne (souvent un ID utilisateur).
- aud — audience : à qui le jeton est destiné.
- jti — un identifiant unique pour le jeton.
Questions fréquentes
- Mon jeton ou ma clé sont-ils envoyés quelque part ?
- Non. Le décodage et la vérification de la signature s’exécutent entièrement dans votre navigateur avec la Web Crypto API. Le jeton, le secret et la clé publique ne quittent jamais votre appareil, il est donc sûr d’inspecter des jetons de production.
- Quels algorithmes de signature peut-il vérifier ?
- HMAC (HS256, HS384, HS512) avec un secret partagé, et RSA (variantes RS et PS) et ECDSA (ES256, ES384) avec une clé publique au format PEM. L’algorithme est détecté automatiquement depuis le header du jeton.
- Un JWT est-il chiffré ?
- Non. Un JWT signé standard est seulement encodé, pas chiffré — n’importe qui peut lire son header et son payload. La signature prouve que le jeton n’a pas été altéré, mais ne cache pas le contenu, ne stockez donc jamais de secrets dans le payload.
- Ai-je besoin de la clé privée pour vérifier un jeton RS256 ?
- Non. Les algorithmes asymétriques vérifient avec la clé publique. Vous n’avez besoin de la clé privée que pour créer (signer) un jeton, jamais pour le contrôler.
- Pourquoi mon jeton s’affiche-t-il comme expiré ?
- Le claim exp est dans le passé par rapport à l’horloge de votre appareil. L’outil convertit exp, nbf et iat vers votre heure locale et affiche un statut pour confirmer d’un coup d’œil la fenêtre de validité du jeton.
- Quelle est la différence entre HS256 et RS256 ?
- HS256 est symétrique : un seul secret partagé signe et vérifie, ce qui est le plus simple quand la même partie fait les deux. RS256 est asymétrique : une clé privée signe et une clé publique vérifie, ce qui permet à de nombreuses parties de vérifier des jetons sans pouvoir les falsifier.
- Puis-je modifier le payload et re-signer le jeton ?
- Cet outil est en lecture seule : il décode et vérifie, mais ne crée ni ne re-signe de jetons. Cela le garde ciblé et évite de manipuler des clés de signature privées.