Décodeur JWT
Collez un JSON Web Token pour lire son en-tête et son payload, avec les dates d'expiration et d'émission affichées en clair.
Fonctionne entièrement dans votre navigateur
Signature non vérifiée. Cette page décode le jeton ; elle ne vérifie pas qu'il est authentique. N'importe qui peut créer un jeton avec n'importe quel contenu.
- Algorithme
- -
- Type
- -
- ID de clé
- -
- Parties
- -
Dates
| Claim | Votre fuseau horaire, puis UTC | Relatif |
|---|
Claims
| Claim | Signification | Valeur |
|---|
Jetons jusqu'à 1 Mo. Décodage uniquement : la signature est affichée mais pas vérifiée.
Comment décoder un JWT
- Collez le jeton dans la zone de saisie. Un préfixe
Beareret les espaces ou guillemets autour sont ignorés. - Lisez l'en-tête et le payload ci-dessous, ainsi que les dates d'expiration, de début de validité et d'émission, dans votre fuseau horaire et en UTC.
- Copiez le payload ou l'en-tête décodé en JSON mis en forme si vous en avez besoin ailleurs.
Que contient un JSON Web Token
Pour décoder un JWT, il suffit de savoir qu'un JWT signé est formé de trois morceaux de texte Base64url reliés par des points : un en-tête, un payload et une signature. L'en-tête et le payload sont simplement du JSON écrit en Base64url, c'est pourquoi n'importe qui peut les lire. Le Base64url est un encodage, pas un chiffrement : ne placez donc jamais de secrets dans le payload d'un JWT, sauf si le jeton est chiffré.
Le payload contient des claims (revendications). Certains noms sont enregistrés : iss (qui a émis le jeton), sub (le sujet du jeton), aud (à qui il est destiné), exp (quand il expire), nbf (pas valide avant), iat (quand il a été émis) et jti (un identifiant unique). Les services ajoutent leurs propres claims, comme des rôles, des portées (scopes) ou une adresse e-mail.
C'est la signature qui rend les claims dignes de confiance, et la vérifier nécessite la clé de signature, que seuls l'émetteur et les services qui acceptent le jeton devraient détenir. Ce décodeur s'arrête volontairement à la lecture : il montre ce que dit un jeton et quand il expire, ce qui est généralement ce dont vous avez besoin pour déboguer une connexion ou un appel d'API.
Astuces
- Convertissez n'importe quel autre temps Unix en date avec le Convertisseur de timestamp Unix.
- Mettez en forme ou vérifiez un gros payload avec Formater et valider du JSON.
- Décodez à la main un seul morceau en Base64url avec Encoder et décoder en Base64.
Questions fréquentes
L'outil vérifie-t-il la signature ?
Non. Cette page se contente de décoder le jeton. N'importe qui peut créer un jeton avec n'importe quel en-tête et payload : le contenu affiché ici est donc une suite d'affirmations, pas une preuve. Seul le service qui détient la clé de signature (ou la clé publique, pour les jetons RS256 et ES256) peut dire si un jeton est authentique, et il doit aussi vérifier l'expiration, l'audience et l'émetteur.
Est-il sûr de coller un jeton ici ?
Cette page n'envoie le jeton nulle part : il est décodé par du code qui s'exécute dans votre navigateur et n'est pas conservé. Malgré cela, un jeton d'accès actif équivaut à un mot de passe tant qu'il est valide. Évitez de coller des jetons de production sur quelque site web que ce soit, et préférez des jetons expirés ou de test pour le débogage.
Pourquoi certains jetons sont-ils illisibles ?
Un jeton en cinq parties au lieu de trois est un JWT chiffré (JWE). Son en-tête est lisible, mais le payload est chiffré et ne peut être lu qu'avec la clé du destinataire : l'outil affiche donc l'en-tête et explique les différentes parties. Les autres erreurs, comme un mauvais nombre de parties ou un texte qui n'est pas du Base64url ou du JSON valide, sont signalées avec la cause du problème.
Comment les dates sont-elles calculées ?
Les claims exp, nbf et iat sont des NumericDate : des secondes écoulées depuis le 1er janvier 1970 UTC. Elles sont affichées dans le fuseau horaire de votre appareil et en UTC, et comparées à l'horloge de votre appareil pour indiquer si le jeton a expiré. Si votre horloge est fausse, les durées relatives le seront aussi. Une valeur qui ressemble à des millisecondes est signalée, car c'est une erreur fréquente.
Que signifient alg, typ et kid ?
alg est l'algorithme de signature, comme HS256 (un secret partagé), RS256 ou ES256 (une paire de clés). typ vaut généralement JWT. kid est l'identifiant de la clé utilisée par l'émetteur, qui indique au vérificateur avec quelle clé contrôler la signature. Un jeton dont alg vaut none n'est pas signé et ne doit jamais être accepté pour quoi que ce soit d'important.