Décodeur JWT
Collez un JWT (trois parties encodées en base64url séparées par des points) et le décodeur affiche l’en-tête, la charge utile et la signature, décodés et joliment formatés, ainsi que l’algorithme détecté, l’expiration du jeton dans votre heure locale, et si nbf (non avant), iat (émis à) et exp (expiration) sont cohérents. Vérification de signature optionnelle si vous avez le secret ou la clé publique.
Comment décoder un JWT
-
1
Collez le jeton
Trois chaînes base64url séparées par `.` (en-tête.charge utile.signature).
-
2
Lisez l'en-tête décodé
Algorithme, type, ID de clé (`kid`). L'algorithme vous indique de quel type de clé vous avez besoin pour la vérification.
-
3
Lisez la charge utile
Revendications standard (`iss`, `sub`, `aud`, `exp`, `iat`, `nbf`, `jti`) plus toutes les revendications personnalisées émises par votre application.
-
4
Vérifiez (optionnel)
Fournissez le secret HMAC (pour HS256/384/512) ou la clé publique (pour RS256, ES256, etc.) pour confirmer que la signature est valide.
Anatomie d’un JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Chaque segment est encodé en base64url (pas en base64 standard). L’en-tête est JSON comme {"alg":"HS256","typ":"JWT"}, la charge utile est JSON comme {"sub":"1234567890","name":"Alice","iat":1600000000}, et la signature est la signature HMAC ou RSA de en-tête.charge utile.
Revendications standard (RFC 7519)
| Revendication | Nom | Remarques |
|---|---|---|
iss |
Émetteur | Qui a émis le jeton |
sub |
Sujet | De qui parle le jeton |
aud |
Public | Pour qui est le jeton |
exp |
Temps d’expiration | Horodatage Unix ; rejeté après ce temps |
nbf |
Non avant | Horodatage Unix ; rejeté avant ce temps |
iat |
Émis à | Horodatage Unix de la création du jeton |
jti |
ID JWT | Identifiant unique pour les listes de révocation |
Algorithmes pris en charge
valeur alg |
Type de clé |
|---|---|
HS256/HS384/HS512 |
Secret HMAC partagé |
RS256/RS384/RS512 |
Clé publique RSA |
ES256/ES384 |
Clé publique ECDSA |
PS256/PS384 |
Clé publique RSA-PSS |
EdDSA / Ed25519 |
Courbe Edwards |
none |
Ne jamais faire confiance à cela, jetons non signés |
Le piège alg: none
Les premières bibliothèques JWT permettaient des jetons "alg": "none" et les acceptaient naïvement comme valides. Toujours :
- Liste blanche des algorithmes que votre application accepte.
- Rejetez
alg: nonesans condition. - Rejetez
alg: HS256lorsque votre code de vérification attendRS256(l’attaque de “confusion d’algorithme”).
Ce que JWT n’est PAS
- Pas chiffré. L’en-tête et la charge utile sont encodés en base64, ce qui est facilement décodable. Ne mettez jamais de secrets dans un JWT sans l’envelopper dans JWE.
- Pas révocable par défaut. Une fois émis, un JWT est valide jusqu’à
exp. Pour la révocation, vous avez besoin d’une liste noire ou d’une courte expiration + jetons de rafraîchissement. - Pas un remplacement de cookie de session pour chaque cas d’utilisation. Les jetons opaques stockés côté serveur sont souvent plus simples et plus sûrs.
Erreurs courantes
- Faire confiance à l’en-tête. Le
kidetalgproviennent du jeton lui-même. Un serveur compromis peut les définir arbitrairement ; validez toujours par rapport à une liste fixe. - Ignorer le décalage
nbfetiat. La dérive d’horloge signifie queiat > maintenantpeut se produire. Autorisez une petite marge (30-60s). - Journaliser des JWT entiers. La charge utile contient souvent des ID d’utilisateur, des e-mails, des autorisations, des informations personnelles qui ne devraient pas se retrouver dans stdout.
- Utiliser HS256 avec un secret faible. Un secret de 16 caractères est brute-forçable en quelques minutes. Utilisez au moins 256 bits d’entropie aléatoire.
Questions fréquentes
Non. Le décodage se fait dans votre navigateur. Le jeton reste local, important car les JWT contiennent souvent des données de session, des ID d’utilisateur et des autorisations.
Oui. Si vous collez le secret HMAC partagé ou la clé publique encodée en PEM, la vérification se fait dans votre navigateur. La clé ne quitte jamais votre machine.
Cela signifie que le jeton n’est pas signé. N’acceptez jamais de tels jetons en production, ils peuvent être forgés facilement. Plusieurs CVE de haut niveau concernaient spécifiquement des bibliothèques qui acceptaient alg: none par défaut.
La signature JWT prouve l’authenticité, pas la confidentialité. L’en-tête et la charge utile sont encodés en base64url, ce qui est réversible. Pour la confidentialité, utilisez JWE (JSON Web Encryption) autour du JWT, ou évitez de mettre des données sensibles dans la charge utile.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Compteur de FPS
Mesurez les FPS du navigateur avec requestAnimationFrame : lissage, fréquence d'images min et max, seuil d'alerte et graphique facultatif. Tout se passe en local, sans envoi ni API.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Formateur HTML
Mettez du HTML en forme localement dans le navigateur avec une indentation de deux ou quatre espaces. Aucun HTML n’est envoyé ni validé.
Outil disponible dans d’autres langues
- Decoder JWT [ID]
- JWTデコーダ [JA]
- ตัวถอดรหัส JWT [TH]
- Mã giải mã JWT [VI]
- JWT-Dekoder [DE]
- JWT 해독기 [KO]
- Dekoder JWT [PL]
- Decodificador JWT [PT]
- Decodificador JWT [ES]
- JWT-avkodare [SV]
- مُفكّك JWT [AR]
- JWT-decoder [NL]
- Декодировщик JWT [RU]
- JWT Dekoderi [TR]
- JWT 解码器 [ZH]
- JWT Decoder [EN]
- Decoder JWT [IT]