Décodeur JWT (contenu, expiration et signature)

Collez un JWT pour lire son en-tête et son payload, et voir l’expiration sous forme de date. Avec une clé, la signature est aussi vérifiée.

JWT

0 caractères · 0 lignes

Tout est traité sur cet appareil. Ce que vous saisissez n’est envoyé nulle part.

Un JWT peut valoir une clé de connexion. Ne le collez pas sur d’autres sites auxquels vous ne faites pas confiance.

Contenu décodé

Le résultat s’affiche ici

Utile ? Un partage nous ferait plaisir

Quelque chose ne marche pas, ou une idée pour l’améliorer ?

Mode d’emploi

  1. 1. Coller le JWT

    Touchez « Coller », au-dessus de la zone du haut, pour insérer le JWT que vous avez copié. Inutile de retirer le « Bearer » ou les guillemets autour. Pour simplement essayer, touchez « Exemple ».

  2. 2. Voir le contenu

    Une étiquette comme « Valide » ou « Expiré » s’affiche dans « Contenu décodé », en dessous. Plus bas, l’expiration et la date d’émission sont listées à l’heure de cet appareil, avec « dans 2 ans » ou « il y a 3 heures ». Viennent ensuite le JSON de l’en-tête et du payload : touchez « Copier le payload » pour copier le JSON mis en forme.

  3. 3. Vérifier la signature

    Dans « Vérifier la signature », tout en bas, saisissez la clé secrète pour HS256 et similaires, ou la clé publique pour RS256, ES256 et similaires. « La signature est valide » ou « La signature ne correspond pas » s’affiche aussitôt. La clé du jeton d’exemple est papatto-sample-secret.

Idéal pour

  • Comprendre pourquoi la session se coupe d’un coup

    Collez le jeton pour voir son expiration (exp) et sa date d’émission (iat) à l’heure de cet appareil, avec « il y a 5 minutes » par exemple. L’étiquette indique tout de suite s’il a expiré : une horloge décalée ou une durée de vie trop courte se repère facilement.

    Développeurs web et équipes de support

  • Voir ce que contient un jeton

    Lisez l’utilisateur (sub), l’émetteur (iss), le destinataire (aud) et les claims personnalisés, comme les rôles, en JSON mis en forme. Le texte copié depuis les outils de développement avec « Bearer » devant se colle tel quel.

    Ceux qui créent ou testent des API

  • Vérifier que la clé de signature est la bonne

    Saisissez une clé secrète HS256 ou une clé publique RS256 ou ES256 (PEM ou JWK) pour savoir aussitôt si la signature a été faite avec cette clé. Pratique pour trouver la cause d’une authentification qui échoue à cause d’une clé mal configurée.

    Développeurs qui travaillent sur l’authentification

  • Ne pas faire sortir un vrai jeton

    Le décodage comme la vérification se font entièrement dans le navigateur de cet appareil. Jetons et clés ne sont jamais envoyés à un serveur : vous ne confiez pas vos identifiants au serveur de quelqu’un d’autre.

    Ceux qui font attention à la sécurité

Bon à savoir

  • Le contenu d’un JWT n’est pas chiffré : n’importe qui peut le lire. N’y mettez pas de mot de passe ni rien qui doive rester caché.
  • Le contenu d’un JWT chiffré (JWE) ne peut pas être lu. Seul l’en-tête est lisible.
  • Les clés publiques ne sont pas récupérées automatiquement (depuis une URL JWKS). Collez la clé vous-même : cette page ne communique avec rien à l’extérieur.

À propos des JWT

Un JWT (JSON Web Token) est une chaîne qui porte les informations et les droits d’un utilisateur connecté, en 3 parties : « en-tête.payload.signature ». L’en-tête et le payload ne sont que du JSON mis sous la forme URL-safe du {tool:base64} : n’importe qui peut les décoder et les lire. Ce qui empêche la falsification, c’est la signature à la fin.

Cet outil affiche les exp (expiration), nbf (valide à partir de) et iat (émis le) du payload comme des dates dans le fuseau horaire de cet appareil, avec des formules comme « dans 3 heures », et une étiquette vous prévient si le jeton a expiré. Un timestamp en nombre seul peut aussi être converti avec {tool:unix-time}. Avec une clé, il vérifie aussi si les signatures HS256, RS256, PS256, ES256, EdDSA, etc. sont valides, uniquement dans le navigateur.

Les 3 parties d’un JWT
ContenuLisible ?
En-têteAlgorithme de signature (alg), type (typ), ID de la clé (kid)Par tout le monde
PayloadUtilisateur (sub), expiration (exp), claims comme les rôlesPar tout le monde
SignatureValeur calculée avec une clé à partir de l’en-tête et du payloadInvérifiable sans la clé

Questions fréquentes

Les réponses aux questions qu’on se pose souvent avant de commencer.

Le JWT que je colle est-il envoyé quelque part ?

Non. Le décodage et la vérification de la signature se font uniquement dans le navigateur de votre appareil : ni le JWT ni la clé ne sont envoyés à un serveur. Comme un JWT peut valoir une clé de connexion, évitez de le coller sur d’autres sites dont vous ne savez pas ce qu’ils en font.

Comment lire l’expiration (exp) ?

L’étiquette au-dessus de « Contenu décodé » indique « Valide », « Expiré », « Pas encore valide » ou « Sans expiration ». La liste en dessous donne la date d’expiration dans le fuseau horaire de cet appareil, avec le temps à partir de maintenant, comme « dans 3 heures » ou « il y a 2 jours ».

Peut-on vérifier la signature ?

Oui. Saisissez la clé secrète (en texte ou en Base64) pour HS256, HS384 ou HS512, ou la clé publique pour RS256, PS256, ES256, EdDSA, etc. : « La signature est valide » ou « La signature ne correspond pas » s’affiche aussitôt.

Quels formats de clé publique sont acceptés ?

Le PEM commençant par « -----BEGIN PUBLIC KEY----- », « -----BEGIN RSA PUBLIC KEY----- », les certificats (-----BEGIN CERTIFICATE-----), le JWK et le JWK Set ({"keys": […]}). Avec un JWK Set, la clé ayant le même kid que l’en-tête est choisie.

Peut-on le coller avec « Bearer » devant ?

Oui. Une ligne « Authorization: Bearer », ainsi que les espaces, retours à la ligne et guillemets autour, sont retirés automatiquement avant la lecture.

Le message « JWT sans signature (alg: none) » s’affiche

Ce jeton n’a pas de signature : n’importe qui peut en modifier le contenu. Si ce n’est pas pour un test, revoyez la configuration de votre serveur. Un serveur qui utilise les JWT pour la connexion ne doit jamais accepter un JWT dont l’alg vaut none.

Le message « JWT chiffré (JWE) » s’affiche

Un JWT séparé en 5 parties par des « . » est un JWE, dont le contenu est chiffré. Il ne peut être lu qu’avec la clé privée du destinataire : cet outil n’affiche donc que l’en-tête (algorithme de chiffrement, etc.).

Le message « Illisible en tant que JWT » s’affiche

Soit une partie a été coupée lors de la copie, soit il contient des caractères qu’un JWT ne peut pas contenir. L’outil indique quelle partie est illisible et marque l’endroit en orange dans la zone de saisie : vérifiez à cet endroit.

Le contenu d’un JWT est-il chiffré ?

Non. L’en-tête et le payload sont simplement transformés en caractères selon une table fixe (base64url) : n’importe qui peut les lire. N’y mettez ni mot de passe ni données personnelles.

Est-ce gratuit ?

Oui, c’est gratuit. Sans inscription et sans publicité.