← Tous les outils

Décodeur JWT

Décodez n'importe quel JSON Web Token dans votre navigateur. Lisez l'en-tête, la charge utile et les claims instantanément et en local. Décoder n'est pas vérifier, et rien ne quitte votre appareil.
En-tête
Charge utile

Ce que fait réellement un décodeur JWT

Un jeton web JSON (JWT) ressemble à une longue chaîne opaque de caractères aléatoires, mais il n'est ni chiffré ni protégé par un cryptage secret. C'est un conteneur compact et compatible URL qui transporte des données structurées entre deux parties. Collez un jeton dans le décodeur ci-dessus : il sépare cette chaîne et vous montre le véritable JSON à l'intérieur — les métadonnées, les revendications, à qui le jeton est destiné, et quand il expire. Tout se passe directement dans votre navigateur. Le jeton n'est jamais envoyé, journalisé ni transmis où que ce soit, ce qui compte énormément lorsque l'objet que vous inspectez est un identifiant de session actif.

Un jeton web JSON se divisant en trois segments Base64url lumineux : en-tête, charge utile et signature
Une chaîne ponctuée, trois parties distinctes : en-tête, charge utile et signature.

Trois parties, deux points

Tout JWT bien formé se compose de trois chaînes encodées en Base64url reliées par des points : en-tête.charge_utile.signature. Ce simple caractère point indique aux analyseurs où finit une section et où commence la suivante, et c'est pourquoi un jeton avec un nombre de points incorrect est rejeté avant même que quoi que ce soit d'autre ne soit lu.

L'en-tête est un minuscule objet JSON décrivant le jeton lui-même. Il contient presque toujours typ (le type, généralement JWT) et alg — l'algorithme de signature, tel que HS256 (HMAC avec SHA-256) ou RS256 (RSA avec SHA-256). L'en-tête indique à un vérificateur exactement comment la signature a été produite.

La charge utile est la partie qui intéresse la plupart des gens. C'est un autre objet JSON contenant les revendications — des affirmations sur l'utilisateur et le jeton. La spécification classe les revendications en enregistrées (noms standard et réservés), publiques, et privées (noms personnalisés que vous inventez pour votre propre application). Décoder la charge utile révèle qui est connecté, quel rôle il détient, et quand sa session expire.

La signature est le sceau cryptographique. Elle est calculée sur l'en-tête et la charge utile encodés à l'aide de l'algorithme de l'en-tête plus une clé secrète ou privée. Comme elle couvre les deux autres sections, toute modification de l'en-tête ou de la charge utile — ne serait-ce qu'un seul caractère — l'invalide.

Les revendications que vous verrez le plus souvent

Les revendications enregistrées sont des noms courts de trois lettres définis par la RFC 7519 afin que différents systèmes puissent interopérer. Une poignée apparaît presque partout :

  • ississuer (émetteur) : qui a généré le jeton (votre serveur d'authentification ou fournisseur d'identité).
  • subsubject (sujet) : l'entité que concerne le jeton, généralement un identifiant utilisateur stable.
  • audaudience : le destinataire auquel le jeton est destiné. Une API doit rejeter les jetons dont l'audience n'est pas elle-même.
  • expexpiration time (date d'expiration) : un horodatage Unix après lequel le jeton ne doit plus être accepté.
  • iatissued at (émis le) : l'horodatage Unix de création du jeton.

Vous pourrez aussi rencontrer nbf (not before, pas avant) et jti (un identifiant unique de jeton). Les horodatages sont des secondes depuis 1970 en UTC, raison pour laquelle un décodeur qui les affiche sous forme de dates lisibles vous épargne le calcul mental pour vérifier si un jeton a déjà expiré.

Décoder n'est pas vérifier — c'est là que ça coince

Cette distinction est la chose la plus importante à comprendre au sujet des JWT. Décoder signifie lire le contenu : cela ne requiert aucune clé et quiconque détient le jeton peut le faire, car le Base64url est un encodage, pas du chiffrement. Vérifier signifie prouver que le jeton est authentique et non altéré — recalculer la signature avec la bonne clé secrète ou publique et confirmer qu'elle correspond.

Cet outil décode. Il vous montre ce que le jeton dit, pas si le jeton est digne de confiance. Un jeton pourrait être falsifié, expiré ou rejoué et néanmoins se décoder en un JSON parfaitement propre en apparence. Ne prenez jamais une décision d'autorisation sur la seule base des revendications décodées. En production, vous vérifiez la signature côté serveur, vous contrôlez exp, et vous confirmez que iss et aud correspondent à ce que vous attendez — à l'aide d'une bibliothèque éprouvée, jamais d'une comparaison de chaînes faite maison.

Un jeton lumineux déplié et inspecté à côté d'un sceau de signature doré qui prouve son authenticité
N'importe qui peut lire un jeton. Seul le détenteur de la clé peut prouver qu'il est authentique.

Une charge utile n'est pas un coffre-fort

Comme la charge utile est seulement encodée en Base64url, elle est lisible par quiconque intercepte le jeton. Considérez tout ce qu'elle contient comme public. Ne placez pas de mots de passe, de numéros de carte de crédit complets, de clés secrètes ou de données personnelles sensibles dans les revendications d'un JWT — si vous pouvez le décoder ici en un clic, n'importe qui d'autre en possession d'une copie le peut aussi. La signature protège contre la modification, jamais contre la lecture. Si vous devez vraiment masquer le contenu de la charge utile, c'est le rôle de JWE (jetons chiffrés), une spécification entièrement différente.

Confidentialité et outils connexes

Inspecter un jeton est un acte sensible, ce décodeur s'exécute donc entièrement côté client — l'analyse est du simple JavaScript dans votre onglet et rien ne quitte votre machine. Coller un jeton de session dans un outil hébergé sur serveur revient à confier un identifiant actif à un tiers, ce qui est exactement ce que vous devez éviter. Pour l'encodage qui sous-tend tout cela, consultez notre outil Base64, et explorez le reste de nos outils pour développeurs pour davantage d'utilitaires fonctionnant sur l'appareil.

Questions fréquentes

Un JWT est-il chiffré ?

Non. Un JWT standard est encodé en Base64url, pas chiffré. Quiconque possède le jeton peut lire l'en-tête et la charge utile. Utilisez JWE si vous avez besoin que le contenu soit masqué.

Cet outil vérifie-t-il la signature ?

Non. Il ne fait que décoder et afficher l'en-tête et la charge utile. Vérifier la signature requiert la clé secrète ou publique de l'émetteur et doit se faire sur votre serveur.

Est-il sûr de coller mon jeton ici ?

Oui. Le décodage s'exécute entièrement dans votre navigateur en JavaScript local. Le jeton n'est jamais envoyé, stocké ni transmis à un quelconque serveur.

Que signifient iss, sub, aud, exp et iat ?

Ce sont des revendications enregistrées : émetteur, sujet, audience, date d'expiration et date d'émission. Les trois liées au temps utilisent des horodatages Unix en secondes.

Puis-je faire confiance aux revendications affichées après décodage ?

Pas à elles seules. Des revendications décodées peuvent provenir d'un jeton falsifié ou expiré. Vérifiez toujours la signature et contrôlez l'expiration côté serveur avant de leur faire confiance.

Pourquoi mon jeton a-t-il trois parties séparées par des points ?

Ce sont l'en-tête, la charge utile et la signature, chacun encodé en Base64url et relié par des points. Les points indiquent aux analyseurs où commence et où finit chaque section.