Aller au contenu

Décoder et vérifier des JWT

Décodez l’en-tête et les claims d’un JSON Web Token, vérifiez son expiration et sa signature ; le jeton ne quitte jamais votre navigateur.

Décodé et vérifié dans cet onglet : le jeton et les clés ne sont jamais envoyés.

L’en-tête, les claims et l’expiration s’affichent ici quand vous collez un jeton.
Fonctionne dans votre navigateur · aucun envoiComment ça marche

Comment utiliser Décodeur JWT

  1. 1

    Collez le jeton

    Collez le JWT provenant d’un en-tête Authorization, d’un cookie ou du stockage de votre application ; un « Bearer » au début est ignoré.

  2. 2

    Lisez les claims

    Consultez les tableaux de l’en-tête et de la charge utile, les dates exp, iat et nbf lisibles, ainsi que le bandeau d’expiration.

  3. 3

    Ajoutez la clé

    Saisissez le secret HMAC, ou collez la clé publique au format PEM, certificat, JWK ou JWKS.

  4. 4

    Vérifiez la signature

    Cliquez sur Vérifier la signature pour confirmer que le jeton a été signé avec cette clé et n’a pas été modifié.

Limites et Pro

Gratuit, sans inscription et sans limite du nombre de jetons ; la vérification prend en charge 13 algorithmes (HS, RS, PS et ES en 256, 384 et 512 bits, plus EdDSA).

Pro supprime les publicités ; le décodage et la vérification sont identiques quelle que soit l’offre. Découvrir Pro

À propos de Décodeur JWT

Un JSON Web Token se compose de trois chaînes Base64URL séparées par des points : un en-tête qui indique l’algorithme de signature, une charge utile contenant des claims, et une signature. Collez-en un, avec ou sans le préfixe « Bearer », et le décodeur affiche l’en-tête et la charge utile sous forme de tableau lisible ou de JSON mis en forme, colore les trois parties du jeton et explique les champs standard comme iss, sub, aud, kid et scope.

Les dates sont converties pour vous : exp, iat, nbf et auth_time apparaissent sous forme de date dans votre fuseau horaire, en UTC et en durée relative (« expire dans 2 heures », « expiré il y a 3 jours »). Un bandeau indique d’un coup d’œil si le jeton est expiré, pas encore valide ou sans expiration, et signale quand exp semble exprimé en millisecondes plutôt qu’en secondes.

Décoder ne prouve rien sur l’émetteur d’un jeton : le vérificateur contrôle donc la signature avec WebCrypto, intégré à votre navigateur. HS256, HS384 et HS512 demandent le secret partagé (texte brut ou Base64). Les algorithmes RS, PS et ES en 256, 384 et 512 bits, ainsi qu’EdDSA avec Ed25519, demandent la clé publique, que vous pouvez coller sous forme de clé publique PEM, de bloc RSA PUBLIC KEY, de certificat X.509, d’un JWK unique ou d’un JWKS complet, dans lequel la clé est choisie grâce au kid du jeton.

L’outil ne peut pas déchiffrer les jetons JWE (ceux à cinq parties) et ne récupère pas les URL de JWKS : ouvrez vous-même le jwks_uri de l’émetteur et collez son JSON.

Confidentialité

Les jetons sont des identifiants porteurs, et cette page les traite comme tels : le décodage et la vérification de signature s’exécutent dans votre navigateur avec WebCrypto, et le jeton, le secret et les clés ne sont jamais envoyés à un serveur, journalisés ni stockés. Fermer ou recharger l’onglet efface tout.

Fonctionnalités

Dates lisibles

exp, iat et nbf dans votre fuseau horaire, en UTC et sous la forme « dans 2 heures » ou « il y a 3 jours ».

Vraie vérification de signature

HMAC, RSA, RSA-PSS, ECDSA et Ed25519 vérifiés avec WebCrypto à partir de votre clé ou de votre JWKS.

Le jeton reste sur votre appareil

Rien n’est envoyé : vous pouvez inspecter des jetons de production en toute sécurité.

Décodeur JWT : questions fréquentes

Puis-je coller ici un jeton de production en toute sécurité ?
Le jeton est décodé et vérifié par du JavaScript qui s’exécute dans votre onglet, et aucune requête le contenant n’est émise, ce que vous pouvez confirmer dans le panneau réseau de votre navigateur. Cela dit, un jeton valide fonctionne comme un mot de passe jusqu’à son expiration : évitez de coller des jetons actifs sur un site auquel vous ne faites pas confiance, et préférez des jetons expirés ou de test pour vos captures d’écran.
Pourquoi un jeton décodé ne prouve-t-il rien ?
N’importe qui peut créer un en-tête et une charge utile puis les encoder en Base64URL ; le décodage ne fait que l’inverse. Seule la signature relie le jeton à son émetteur. Vérifiez-la avec la clé publique de l’émetteur ou le secret partagé avant de croire un claim, et contrôlez que alg correspond à ce qu’attend votre serveur : accepter « none » ou un algorithme substitué est une faille classique.
Où trouver la clé publique pour vérifier un jeton RS256 ou ES256 ?
Les fournisseurs d’identité publient leurs clés sous forme de JWK Set. Consultez le /.well-known/openid-configuration de l’émetteur, ouvrez le jwks_uri qui y figure et collez ici ce JSON : la clé dont le kid correspond à l’en-tête du jeton est utilisée. Vous pouvez aussi coller une clé publique PEM ou le certificat X.509 de l’émetteur.
Que signifient exp, iat et nbf ?
Ce sont des claims de type NumericDate, comptés en secondes depuis le 1er janvier 1970 UTC. exp indique quand le jeton cesse d’être valide, iat quand il a été émis et nbf le moment le plus tôt où il peut être accepté. Les serveurs tolèrent généralement une minute ou deux de décalage d’horloge. Le décodeur affiche chacun sous forme de date locale, d’horodatage UTC et de durée relative.
Pourquoi la vérification échoue-t-elle avec le bon secret HMAC ?
Les causes fréquentes sont des espaces copiés avec le secret, un secret encodé en Base64 lors de la signature, ou un jeton ré-encodé par un outil qui a modifié les octets de l’en-tête ou de la charge utile. Essayez l’option « Le secret est encodé en Base64 ». Toute modification des deux premières parties, même un simple changement d’ordre des clés JSON, invalide la signature.