Aller au contenu
ToolMug

Décodeur JWT

Collez un JSON Web Token pour afficher son en-tête et sa charge utile, savoir s’il a expiré et vérifier la signature avec un secret ou une clé publique. Tout s’exécute localement, donc vos jetons de production ne sont jamais envoyés à un serveur.

Fonctionne dans votre navigateur — rien de ce que vous saisissez n’est envoyé

Le décodage ne vérifie pas la signature. N’importe qui peut créer un jeton avec n’importe quels claims.

Mode d’emploi

  1. Collez le jeton, avec ou sans le préfixe « Bearer ». Les trois parties sont colorées différemment.
  2. Lisez l’en-tête et la charge utile décodés. Les claims iat, nbf et exp sont affichés sous forme de dates avec le temps relatif.
  3. Pour vérifier la signature, saisissez le secret partagé pour HS256/384/512, ou collez la clé publique (PEM ou JWK) pour les jetons RS, PS, ES et EdDSA.
  4. Copiez le JSON décodé si vous en avez besoin ailleurs.

Explication des options

En-tête
Les métadonnées du jeton, en général alg (l’algorithme de signature) et typ. Un champ kid indique quelle clé l’a signé.
Charge utile
Les claims. Les claims enregistrés comprennent sub (sujet), iss (émetteur), aud (audience), iat (émis le), nbf (pas avant) et exp (expiration), tous les horodatages étant en secondes Unix.
Signature
Prouve que l’en-tête et la charge utile n’ont pas été modifiés. Pour la vérifier, il faut le secret (HMAC) ou la clé publique de l’émetteur (RSA, ECDSA, EdDSA).
Le secret est encodé en Base64
Certains services stockent les secrets HMAC encodés en Base64. Cochez cette case si le secret dont vous disposez est la forme encodée.

Claims courants

Claim Signification Exemple
sub La personne concernée par le jeton (ID utilisateur) "1234567890"
iss Qui l’a émis "https://accounts.example.com"
aud À qui il est destiné "my-api"
exp Date d’expiration, en secondes Unix 1790427600
iat Date d’émission, en secondes Unix 1790424000
nbf Non valide avant, en secondes Unix 1790424000
jti Identifiant unique du jeton, pour empêcher le rejeu "a1b2c3"

Exemple

Le jeton eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c se décode en l’en-tête {"alg":"HS256","typ":"JWT"} et en une charge utile contenant sub, name et iat (18 janvier 2018). Avec le secret your-256-bit-secret, la signature est vérifiée.

Questions fréquentes

Est-il sûr de coller ici un JWT de production ?

Le jeton est décodé par JavaScript dans votre navigateur ; il n’est ni envoyé ni journalisé. Traitez néanmoins les jetons d’accès comme des mots de passe — quiconque détient un jeton valide peut l’utiliser jusqu’à son expiration.

Décoder un JWT prouve-t-il qu’il est authentique ?

Non. L’en-tête et la charge utile sont seulement encodés en Base64URL, donc n’importe qui peut les lire ou les falsifier. Seule une vérification réussie de la signature avec la bonne clé montre que le jeton a été émis par la partie attendue.

Pourquoi la vérification échoue-t-elle avec le bon secret ?

Vérifiez si le secret est encodé en Base64, s’il y a un espace ou un saut de ligne final, et si l’algorithme de l’en-tête correspond à celui qu’utilise l’émetteur. Toute modification du jeton, même d’un seul caractère, invalide aussi la signature.

Que signifie « alg none » ?

Le jeton se déclare non signé. Les serveurs doivent rejeter ces jetons sauf s’ils les attendent explicitement ; les accepter a déjà provoqué de véritables contournements d’authentification.

Comment obtenir la clé publique pour des jetons RS256 ?

Les fournisseurs d’identité publient leurs clés sous forme de JWKS, généralement à l’adresse /.well-known/jwks.json. Copiez la clé dont le kid correspond à l’en-tête du jeton et collez-la ici au format JWK.

Confidentialité

Cet outil fonctionne entièrement dans votre navigateur. Vos fichiers et vos textes sont traités sur votre appareil et ne sont jamais envoyés à nos serveurs.

Outils similaires