PK Systems PK Systems
Encodeurs et décodeurs

Décodeur JWT

Collez un JSON Web Token, voyez l'en-tête et la charge utile décodés. Validation locale, sans envoi.

Décodeur JWT

Les jetons accordent un accès — ne collez jamais un JWT de production dans un outil auquel vous ne faites pas confiance. Cette page s'exécute entièrement dans votre navigateur, mais par habitude, décodez les jetons non fiables localement.

Décodé

En-tête


            

Charge utile


                
            

Signature


                

La signature est affichée en base64url. Cet outil ne vérifie pas la signature — cela nécessite la clé secrète ou la clé publique de l'émetteur.

Qu'est-ce qu'un JWT ?

Un JSON Web Token (JWT, prononcé « jot ») est un moyen compact et compatible avec les URL de transporter du JSON signé entre des parties — le plus souvent un serveur d'authentification et votre application. Un JWT comporte trois parties encodées en base64url séparées par des points : header.payload.signature. L'en-tête indique l'algorithme de signature utilisé ; la charge utile est un objet JSON contenant des revendications (sujet, expiration, données personnalisées) ; la signature permet au destinataire de vérifier que le jeton n'a pas été altéré. La norme est définie dans la RFC 7519.

Comment utiliser ce décodeur

Collez un JWT dans le champ ci-dessus. L'outil découpe la chaîne aux points, décode en base64url les deux premiers segments et affiche joliment le JSON résultant dans deux panneaux — En-tête et Charge utile. Le troisième panneau montre la chaîne brute de la signature. Si la charge utile contient les revendications iat, nbf ou exp, l'outil les affiche également sous forme d'horodatages UTC lisibles et indique si le jeton a expiré. Le décodage est en direct : dès que vous avez fini de taper, les panneaux se mettent à jour.

Décodé ≠ vérifié

Un décodeur JWT est un outil de débogage, pas un outil de sécurité. N'importe qui peut décoder un JWT — l'encodage est réversible par conception. C'est la signature qui rend le jeton fiable, et vérifier une signature nécessite la clé secrète de l'émetteur (HS256) ou sa clé publique (RS256, ES256). Ne faites jamais confiance au contenu d'un JWT en production sans avoir d'abord vérifié sa signature. Utilisez la bibliothèque JWT fournie avec votre framework pour le faire ; n'écrivez jamais la vôtre.

Revendications JWT standard

Revendication Nom Signification
issÉmetteurIdentifie l'entité qui a émis le jeton (par ex. l'URL d'un serveur d'authentification).
subObjetIdentifie le principal auquel se rapporte le jeton — généralement un identifiant utilisateur.
audAudienceLes destinataires auxquels le jeton est destiné. Les destinataires doivent rejeter les jetons qui ne leur sont pas adressés.
expDate d'expirationHorodatage Unix après lequel le jeton ne doit pas être accepté.
nbfPas avantHorodatage Unix avant lequel le jeton ne doit pas être accepté.
iatÉmis leHorodatage Unix auquel le jeton a été émis.
jtiIdentifiant JWTIdentifiant unique du jeton, utile pour les listes de révocation.

Questions fréquentes

Mon JWT est-il envoyé quelque part ?
Non. Le décodage est effectué entièrement dans votre navigateur — le jeton ne quitte jamais votre appareil. Vous pouvez le confirmer en ouvrant les DevTools > Réseau et en collant un jeton ; aucune requête n'est déclenchée. Cela dit, considérez tout JWT de production comme un identifiant : ne collez que des jetons que vous êtes à l'aise de voir dans l'historique de votre navigateur.
Pourquoi cet outil ne vérifie-t-il pas la signature ?
La vérification nécessite la clé secrète de l'émetteur (pour HS256) ou sa clé publique (pour RS256, ES256, etc.). Demander aux utilisateurs de coller des secrets de production dans une page web est une recette pour le désastre, donc cet outil n'offre délibérément pas cette option. Utilisez la bibliothèque JWT de votre application ou une CLI comme jwt pour vérifier les signatures dans un environnement contrôlé.
J'obtiens « Ce n'est pas un JWT » — qu'est-ce qui ne va pas ?
Un JWT valide comporte exactement trois segments séparés par des points. Causes courantes de l'erreur : espaces en trop ou un préfixe Bearer isolé copié depuis un en-tête HTTP (supprimez-le), seule la charge utile a été collée (vous devez aussi inclure l'en-tête et la signature), ou le jeton est en réalité un JWE (chiffré) qui comporte cinq segments et n'est pas décodable sans la clé privée du destinataire.
Pourquoi la charge utile est-elle en base64url et non en base64 standard ?
Le base64 standard utilise +, / et le remplissage = — aucun n'est compatible avec les URL. Le base64url remplace + par -, / par _, et supprime entièrement le remplissage. Le résultat peut être intégré dans une URL ou un en-tête HTTP sans échappement supplémentaire. Ce décodeur reconvertit en base64 standard avant d'appeler le atob du navigateur.
Que signifie alg: none ?
Cela signifie que le JWT n'est pas signé — n'importe qui peut générer un jeton avec n'importe quelle charge utile. alg: none existe dans la spécification mais est dangereux en pratique : une célèbre catégorie de vulnérabilités exploitait des bibliothèques qui acceptaient les jetons alg: none comme s'ils étaient signés. Si vous voyez cela dans un jeton de production, considérez-le comme une découverte sérieuse.
Est-il sûr de partager un JWT à des fins de débogage ?
Généralement non. Les JWT sont des jetons au porteur — la possession du jeton accorde les droits qu'il représente jusqu'à son expiration (ou sa révocation, si l'émetteur maintient une liste de révocation). Partagez plutôt des captures d'écran de la charge utile décodée que le jeton brut, ou demandez à l'émetteur de générer un jeton de débogage à courte durée de vie avec une portée limitée. Ne collez jamais de jetons de production dans un chat, un e-mail ou des outils tiers.