Décodeur JWT
Décodez l’en-tête et la charge utile d’un JWT, lisez exp, iat et nbf en dates et vérifiez une signature HS256, RS256, ES256 ou EdDSA dans le navigateur.
Un jeton est un identifiant sensible. Cet outil le décode et le vérifie dans votre navigateur, sans jamais l’envoyer.
En-tête
Charge utile (payload)
| Claim | Valeur | Date | État |
|---|
- Algorithme (alg)
- —
- Signature (Base64url)
- —
Vérifier la signature
HS256/384/512 : saisissez le secret partagé. RS, PS, ES (256/384/512) et EdDSA : collez la clé publique au format PEM (clé publique, clé publique RSA ou certificat) ou JWK (dans un JWK Set, la clé est choisie d’après le kid).
Comment décoder un JWT
- Collez le jeton dans Jeton JWT. Une valeur
Authorization: Bearer …complète fonctionne aussi : le préfixeBeareret les retours à la ligne sont supprimés. - Le jeton est décodé pendant la saisie (ou avec Décoder). L’En-tête et la Charge utile (payload) s’affichent en JSON indenté, chacun avec son bouton Copier.
- Consultez le tableau Dates du jeton :
exp,nbfetiaty figurent avec leur valeur brute, la date dans votre fuseau horaire, un délai relatif (« dans 3 heures », « il y a 2 jours ») et un état comme Expiré ou Pas encore valide. - Lisez les avertissements au-dessus des résultats, par exemple si
algvautnoneou si une date semble exprimée en millisecondes. - Pour contrôler la signature, renseignez la clé sous Vérifier la signature, puis cliquez sur Vérifier la signature.
Décoder n’est pas vérifier
Un JWT se compose de trois parties en Base64url séparées par des points : en-tête.charge.signature. L’en-tête et la charge utile sont seulement encodés, pas chiffrés : quiconque possède le jeton peut les lire, et cet outil décode n’importe quel jeton sans clé. Du coup, une charge utile décodée ne prouve rien, elle a pu être modifiée. Seule une signature valide montre que le jeton a été émis par le détenteur de la clé et qu’il n’a pas été altéré. C’est pourquoi la ligne d’état indique « Décodé (signature non vérifiée) » tant que vous n’avez pas vérifié.
Un jeton en cinq parties est un JWE (JWT chiffré) : son contenu reste illisible sans la clé de déchiffrement, et l’outil vous le signale.
Vérifier la signature
- HS256, HS384, HS512 (HMAC) : saisissez le Secret partagé. Le Format du secret précise s’il s’agit de texte (UTF-8) ou de Base64/Base64url, car certains fournisseurs stockent leurs secrets en Base64. Une JWK de type
octest aussi acceptée. Si le secret est plus court que l’empreinte (32 octets pour HS256), l’outil signale qu’il est sous le minimum de la RFC 7518. - RS256/384/512, PS256/384/512, ES256/384/512 et EdDSA : collez la Clé publique (PEM ou JWK). Les blocs PEM acceptés sont
PUBLIC KEY,RSA PUBLIC KEYetCERTIFICATE(la clé est extraite du certificat X.509). Une JWK ou un JWK Set entier convient aussi : la clé dont lekidcorrespond à l’en-tête est retenue. Les clés privées sont refusées : un vérificateur n’en a jamais besoin. EdDSA prend en charge Ed25519 dans les navigateurs dont Web Crypto l’implémente.
La vérification passe par l’API Web Crypto du navigateur. « Signature invalide » signifie que la clé est mauvaise ou que le jeton a été modifié. Notez que l’algorithme est lu dans l’en-tête du jeton ; un vrai serveur doit au contraire imposer l’algorithme attendu dans sa configuration, sinon un attaquant peut le choisir.
Points de sécurité
- Un jeton est un identifiant. Toute personne qui détient un jeton d’accès valide peut en général agir au nom de son titulaire jusqu’à son expiration. Cet outil décode et vérifie tout dans votre navigateur, sans jamais envoyer le jeton ni la clé. Évitez malgré tout de coller des jetons de production dans des outils que vous ne pouvez pas inspecter.
alg: nonesignifie que le jeton n’est pas signé : n’importe qui peut en fabriquer un, et un serveur doit le rejeter. L’outil affiche un avertissement et refuse de « vérifier » ce type de jeton.- Les contrôles de date utilisent l’horloge de votre ordinateur, sans marge de tolérance ; les serveurs acceptent souvent une ou deux minutes de décalage.
- Les dates JWT (NumericDate) sont des secondes écoulées depuis le 1er janvier 1970 UTC. Une valeur à 13 chiffres est probablement en millisecondes, une erreur fréquente.
Questions fréquentes
Cet outil peut-il me dire si un jeton est valide ?
Il indique si la signature correspond à la clé fournie et si exp et nbf sont respectés à cet instant. L’acceptation du jeton dépend aussi de contrôles que seul le serveur connaît : émetteur attendu (iss), audience (aud), algorithme et révocation.
Pourquoi la vérification échoue-t-elle avec le bon secret ?
Vérifiez le Format du secret : un secret Base64 saisi comme texte donne une autre clé. Assurez-vous aussi qu’aucune espace ni aucun retour à la ligne ne s’est glissé dans le secret, car une clé HMAC est comparée octet par octet.
Quelle différence entre RS256, PS256 et ES256 ?
Ce sont trois signatures à clé publique avec SHA-256. RS256 utilise RSA avec le remplissage PKCS#1 v1.5, PS256 RSA avec le remplissage PSS, et ES256 l’algorithme ECDSA sur la courbe P-256, aux signatures bien plus courtes.
Où trouver la clé publique d’un fournisseur d’identité ?
Les fournisseurs publient un JWKS (JSON Web Key Set), en général indiqué dans /.well-known/openid-configuration sous jwks_uri. Ouvrez-le vous-même et collez le JSON ici : l’outil choisit la clé d’après le kid et ne télécharge jamais rien.
Puis-je coller mon jeton sans risque ?
Le jeton reste sur votre appareil : le décodage et la vérification se font localement et rien n’est envoyé. Par précaution, utilisez un jeton expiré ou de test si vous voulez seulement examiner sa structure.
Outils similaires
- Générateur HMAC Calculez un HMAC-SHA1, SHA-256, SHA-384 ou SHA-512 avec une clé texte, hex ou Base64, en hex et Base64, et vérifiez une signature de webhook dans le navigateur.
- Encodeur et décodeur Base64 Encodez et décodez du texte en Base64 en ligne, avec prise en charge complète de l'UTF-8 et option base64url. Tout se fait dans votre navigateur.
- Convertisseur de timestamp Unix Convertissez un timestamp Unix en secondes ou millisecondes en date lisible (heure locale, UTC, ISO 8601), et une date en temps epoch.
- Formateur et validateur JSON Formateur et validateur JSON gratuit qui indente, minifie et vérifie votre JSON dans le navigateur, avec erreurs signalées par ligne et colonne.