Décodeur JWT
Décodez des JSON Web Tokens localement et vérifiez leur signature avec votre secret ou clé publique, sans rien envoyer.
Signez votre propre jeton pour tester un point d’accès. Tout est calculé dans cette page.
La clé et le jeton obtenu restent dans votre navigateur : rien n’est envoyé nulle part, et rien de tout cela ne figure dans un lien partagé.
Vérifiez ce jeton dans votre propre code. L’extrait suit l’algorithme indiqué dans l’en-tête.
Décodeur JWT - décoder un JSON Web Token en ligne
Collez un JSON Web Token : ce décodeur le sépare en trois parties et affiche l'en-tête et la charge utile sous forme de JSON lisible. C'est le moyen le plus rapide de répondre aux questions qui surgissent pendant le débogage d'une authentification - qui a émis ce jeton, à qui est-il destiné, quel algorithme l'a signé et a-t-il déjà expiré ?
Le décodage se fait entièrement dans votre navigateur. Cela compte davantage ici qu'ailleurs, car un JWT est un identifiant actif : quiconque intercepte un jeton valide peut généralement agir au nom de son sujet jusqu'à son expiration. Rien de ce que vous collez sur cette page n'est téléversé, journalisé ou conservé.
Qu'est-ce qu'un JSON Web Token ?
Un JWT se compose de trois segments Base64URL reliés par des points : header.payload.signature. L'en-tête indique l'algorithme de signature, la charge utile porte les claims - les affirmations de l'émetteur au sujet de l'utilisateur ou du client - et la signature prouve que les deux premières parties ont été produites par le détenteur de la clé. Comme l'en-tête et la charge utile sont seulement encodés et non chiffrés, tout le monde peut les lire. Seule la signature est protégée.
Comment décoder un JWT ici
- Copiez le jeton depuis l'en-tête
Authorization: Bearer, un cookie, une URL de callback ou votre client d'API. - Collez la chaîne complète
header.payload.signaturedans le champ de saisie. - Cliquez sur Décoder pour afficher les deux objets JSON.
- Si la requête a été refusée, regardez d'abord
exp, puisaudetiss.
Ce que la page fait aussi
Le jeton est lu au fil de la frappe : les volets se remplissent avant même que vous cherchiez le bouton. Sous l’en-tête et la charge utile décodés, chaque champ figure dans un tableau avec son rôle en mots simples, et une ligne au-dessus transforme exp et nbf en phrases : expiré il y a trois jours, expire dans cinquante-huit minutes, pas encore valide.
- Exemple charge un jeton de démonstration et son secret, pour voir une vérification réussir avant de coller quoi que ce soit à vous.
- Vérifier accepte le secret, une clé publique PEM, un JWK isolé ou un JWKS complet. Collez le document servi à l'adresse
/.well-known/jwks.jsonde l'émetteur : la clé désignée par lekiddu jeton est choisie automatiquement, et la page n'envoie toujours aucune requête. Remplissez aussi Émetteur attendu et Audience attendue, et une signature valide est contrôlée comme sur un serveur : un autreiss, ou unaudqui ne contient pas votre valeur, fait passer le résultat au rouge. - Créer un jeton signe le vôtre avec l’un des douze algorithmes — la page générateur de JWT s’ouvre dessus.
- Code affiche la vérification côté serveur dans huit langages, selon l’algorithme indiqué dans l’en-tête de votre jeton.
- Deux autres pages ouvrent cet outil sur une seule question : a-t-il expiré et pourquoi est-il refusé.
Les claims standard et leur signification
| Claim | Signification | Cause d'échec fréquente |
|---|---|---|
iss | Émetteur du jeton | Ne correspond pas quand un jeton de recette part en production |
sub | Sujet, généralement l'identifiant utilisateur ou service | Vide pour les jetons émis à un client plutôt qu'à une personne |
aud | Audience : l'API censée l'accepter | La cause la plus courante d'un 401 avec un jeton pourtant valide |
exp | Expiration sous forme d'horodatage Unix | Déjà passée, ou horloge serveur décalée |
nbf | Non valide avant cet instant | Jeton utilisé quelques secondes trop tôt |
iat | Date d'émission | Sert aux politiques d'ancienneté maximale et aux fenêtres de révocation |
jti | Identifiant unique du jeton | Nécessaire pour révoquer un jeton précis |
Décoder n'est pas vérifier
C'est le point qui prête le plus à confusion. Lire un jeton vous dit ce qu'il affirme, pas si l'affirmation est authentique. Vérifier signifie recalculer la signature avec le secret ou la clé publique de l'émetteur puis la comparer, en contrôlant aussi l'expiration et l'audience. N'importe quel décodeur affichera la charge utile d'un jeton falsifié aussi volontiers que celle d'un vrai : ne fondez jamais une décision d'autorisation sur le seul contenu décodé, vérifiez côté serveur avec une bibliothèque maintenue.
Diagnostiquer un jeton qui ne passe pas
- 401 avec un jeton valide : comparez
audà ce qu'attend l'API etissà l'URL d'émetteur configurée. Saisissez-les dans Émetteur attendu et Audience attendue, puis cliquez sur Vérifier : le résultat affiche la valeur que porte réellement le jeton. - Expiré immédiatement : convertissez
expavec le convertisseur de timestamp Unix et comparez-le à l'horloge du serveur, pas à celle de votre poste. - Erreur de segment invalide : le jeton a été tronqué, encodé en URL en chemin, ou un retour à la ligne s'est glissé lors du copier-coller.
- Échec de la vérification de signature : la clé a tourné, le mauvais identifiant de clé a été utilisé, ou le jeton vient d'un autre environnement.
algvautnone: refusez-le. Cette valeur désigne un jeton non signé et constitue une attaque classique contre les validations négligentes.
Bonnes habitudes de sécurité
- Ne placez jamais de données personnelles, d'identifiants internes ou d'informations confidentielles dans la charge utile : elle est lisible par conception.
- Gardez des jetons d'accès à courte durée de vie et utilisez un jeton de rafraîchissement pour les sessions longues.
- Transmettez les jetons uniquement en HTTPS et privilégiez les cookies secure et HttpOnly au stockage navigateur.
- Faites tourner les clés de signature régulièrement et publiez-les via un point JWKS pour que les clients suivent.
- Considérez comme exposé tout jeton collé dans un outil en ligne - c'est précisément pour cela que celui-ci ne l'envoie nulle part.
Fonctionne hors ligne dans votre navigateur
Le décodeur est du JavaScript côté client. Une fois la page chargée, vous pouvez décoder des jetons sans aucune connexion réseau, et les identifiants de production ne quittent jamais votre machine.
Décoder un JWT en code ou en ligne de commande
| Où | Comment |
|---|---|
| JavaScript (npm) | import { jwtDecode } from 'jwt-decode'; jwtDecode(token) - le payload seulement, sans vérification |
| Python (PyJWT) | jwt.decode(token, options={'verify_signature': False}) pour lire, ou passez la clé pour vérifier |
| Bash | echo $TOKEN | cut -d. -f2 | tr '_-' '/+' | base64 -d 2>/dev/null - le Base64URL omet le remplissage, un payload court peut donc avoir besoin d'un == final |
| Console du navigateur | JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))) |
Chacune de ces méthodes lit le token sans contrôler la signature - parfait pour déboguer, faux pour autoriser ; voir la section plus haut.
Outils complémentaires
Les jetons se situent au croisement de plusieurs formats. Lisez les segments bruts avec le décodeur Base64, mettez en forme la charge utile avec le formateur JSON, transformez exp et iat en dates avec le convertisseur de timestamp et nettoyez un jeton extrait d'une URL avec le décodeur d'URL.