JWT Encoder/Decoder — Débogage de tokens JSON
Encodeur, décodeur et auditeur de sécurité JWT compatible HS256, RS256, ES256, PS256 et plus. Inspectez les claims, vérifiez les signatures et détectez les failles.
Qu'est-ce que le JWT Encoder/Decoder ?
Le JWT Encoder/Decoder crée des JSON Web Tokens signés, décode les tokens existants pour révéler leur contenu, et effectue des audits de sécurité automatisés sur les claims et les choix d'algorithmes d'un token. Les JSON Web Tokens sont le format le plus courant pour l'authentification sans état — une passerelle API, un fournisseur OAuth ou un microservice génère un token signé, et les services en aval vérifient cette signature plutôt que d'interroger un magasin de sessions centralisé. Lorsque quelque chose ne va pas (un token est rejeté, un claim a une valeur inattendue, ou vous devez vérifier votre logique de signature), vous devez inspecter le token sans écrire de code personnalisé. Cet outil prend en charge l'encodage avec 13 algorithmes répartis en quatre familles, le décodage avec statut d'expiration en temps réel, la vérification des signatures et un mode d'audit de sécurité qui détecte les vulnérabilités courantes. Toutes les opérations s'exécutent côté client — vos tokens et clés de signature ne quittent jamais le navigateur.
Fonctionnalités clés
- Créer des JWTs signés avec HMAC (HS256/384/512) — saisissez un payload JSON et un secret partagé ; l'outil signe le token en utilisant l'API
SignJWTde la bibliothèquejose. - Prise en charge de RSA (RS256/384/512), ECDSA (ES256/384/512) et RSA-PSS (PS256/384/512) — collez une clé privée encodée PEM pour la signature asymétrique ; l'outil importe la clé avec
importPKCS8et signe en conséquence. - Tokens non signés avec
alg: none— la création de tokens non signés est prise en charge mais clairement signalée par un panneau d'avertissement rouge. - Ajout rapide de claims standards — des boutons en un clic insèrent
iss,sub,aud,exp(+1 heure),exp(+1 jour),iat,nbfetjti(un UUID aléatoire decrypto.randomUUID()) dans l'éditeur de payload. - Décoder l'en-tête et le payload JWT — coller n'importe quel JWT affiche immédiatement l'en-tête et le payload analysés sous forme de JSON formaté dans des panneaux côte à côte, avec l'algorithme et le type affichés sous l'en-tête.
- Vérifier le statut d'expiration — une bannière de statut colorée indique si le token est expiré ou valide, avec un compte à rebours en temps réel (p. ex., "2h 34min restantes" ou la date et l'heure d'expiration).
- Vérifier les signatures — fournissez le secret (HMAC) ou la clé publique PEM (asymétrique) et l'outil appelle
jwtVerifypour confirmer que la signature est cryptographiquement valide. - Sortie JWT avec code couleur — les trois segments du token sont affichés en rouge (en-tête), violet (payload) et bleu (signature) pour une identification visuelle facile.
- Mode d'audit de sécurité — analyse un token pour 10 problèmes de sécurité distincts, notamment
alg: none,expmanquant, tokens expirés,nbfdans le futur, expiration très longue, algorithmes faibles et claimsiss,aud,submanquants. - Mode par lots — décode plusieurs tokens JWT à la fois (un par ligne), en affichant l'algorithme et le résumé du payload pour chacun.
- Traitement 100% côté client — utilise le package npm
joses'exécutant entièrement dans le navigateur ; aucun token ni clé n'est transmis.
Comment utiliser le JWT Encoder/Decoder
Étape 1 : Sélectionner un mode
Trois boutons de mode apparaissent en haut de l'outil : Encoder, Décoder et Audit de sécurité. Un avis de sécurité jaune sous le sélecteur de mode vous rappelle que les clés de signature ne doivent pas être saisies dans des outils auxquels vous ne faites pas confiance — c'est une bonne pratique à lire avant de procéder avec tout matériel de clé.
Étape 2 : Créer un JWT (mode Encoder)
Choisissez un algorithme. Un menu déroulant groupé présente les 13 algorithmes pris en charge organisés par famille : HMAC Symétrique (HS256, HS384, HS512), RSA Asymétrique (RS256, RS384, RS512), ECDSA Asymétrique (ES256, ES384, ES512), RSA-PSS Asymétrique (PS256, PS384, PS512) et Non signé (none). La valeur par défaut est HS256.
Modifiez le payload. Un editeur JSON est pre-rempli avec un payload d'exemple contenant sub, name et iat (defini sur l'horodatage Unix actuel au chargement de la page). Modifiez-le directement. Utilisez les boutons d'Ajout Rapide de Claims pour inserer des claims standards sans saisir manuellement des horodatages -- cliquer sur + exp (+1h) insere une valeur exp definie sur l'horodatage Unix actuel plus 3600 secondes.
Saisissez la clé de signature. Pour les algorithmes HMAC (HS256/384/512), un champ de saisie de type mot de passe accepte le secret partagé. Un bouton de basculement afficher/masquer révèle la valeur. Pour les algorithmes asymétriques, une zone de texte multiligne accepte une clé privée au format PEM commençant par -----BEGIN PRIVATE KEY-----.
Cliquez sur "Encoder JWT". Le token signé apparaît dans un panneau de sortie avec code couleur. Un bouton "Copier" copie le token complet. Un bouton "Décoder ce token" le transfère à l'onglet Décoder pour une inspection immédiate.
Étape 3 : Décoder un JWT (mode Décoder)
Collez n'importe quel JWT dans le champ de saisie du token. Le décodage est immédiat — aucun clic sur un bouton n'est requis. L'outil divise le token sur ., décode en Base64URL chaque segment en utilisant une fonction personnalisée base64UrlDecode, et analyse en JSON l'en-tête et le payload.
Si le token possède un claim exp, une bannière colorée apparaît au-dessus des panneaux décodés :
- Vert avec une coche : "Token Valide — 2h 34min restantes"
- Rouge avec une icône d'avertissement : "Token Expiré — Expiré le [date/heure]"
L'en-tête et le payload apparaissent dans des panneaux JSON formatés côte à côte, chacun avec un bouton de copie. En dessous, un panneau Détails des Claims affiche chaque claim du payload dans sa propre carte. Les claims d'horodatage (exp, iat, nbf) affichent à la fois l'entier Unix brut et la chaîne de date lisible par l'homme.
La section Signature et Vérification affiche la chaîne de signature brute et fournit une entrée de clé pour la vérification. Saisissez le secret ou la clé publique et cliquez sur "Vérifier la signature". La carte de résultat devient verte pour une signature valide ou rouge pour une signature invalide.
Étape 4 : Exécuter un audit de sécurité (mode Audit)
Basculez vers l'onglet Audit de Sécurité et collez un token. Les résultats apparaissent immédiatement lors de l'analyse du token. Chaque carte de résultat affiche un badge de gravité (CRITIQUE, AVERTISSEMENT, NOTE ou INFO), un titre, une description en langage simple et une recommandation spécifique. L'audit vérifie 10 conditions :
alg: noneou manquant — CRITIQUE- Algorithme faible
HS1— AVERTISSEMENT - Algorithme symétrique en cours d'utilisation — NOTE
- Claim
expmanquant — AVERTISSEMENT - Token déjà expiré — CRITIQUE
- Expiration à plus d'un an dans le futur — NOTE
- Le claim
nbfest dans le futur — AVERTISSEMENT - Claim
issmanquant — INFO - Claim
audmanquant — INFO - Claim
submanquant — INFO
Si aucun problème n'est trouvé, une carte INFO indique "Aucun problème majeur trouvé — continuez à valider les tokens côté serveur et gardez les clés de signature secrètes."
Exemples pratiques
Générer un token de test pour une API
Votre backend attend un JWT signé HS256 avec les claims sub, iss, aud et exp. En mode Encoder, sélectionnez HS256, commencez avec le payload par défaut, puis cliquez sur + iss, + sub, + aud et + exp (+1h) en séquence pour construire le payload complet. Saisissez votre secret de test et cliquez sur Encoder. Copiez le token résultant dans votre outil de test d'API ou en-tête HTTP. Lorsque le test échoue, collez le token en mode Décoder pour vérifier que les claims correspondent aux attentes — le panneau Détails des Claims facilite la confirmation de chaque valeur sans décoder manuellement en Base64.
Déboguer une erreur d'API "Token Expiré"
Votre application reçoit des réponses 401 Unauthorized. Collez le token de l'en-tête Authorization de votre application en mode Décoder. La bannière d'expiration vous indique immédiatement si le token a expiré et quand. S'il a expiré il y a trois minutes, le problème est soit un token de courte durée sans logique de rafraîchissement, soit un décalage d'horloge entre votre client et l'émetteur du token. Les claims iat et exp dans le panneau Détails des Claims montrent la fenêtre du problème en dates lisibles par l'homme.
Auditer les tokens avant une revue de sécurité
Avant une revue de code ou un test de pénétration, collez des exemples JWT de production en mode Audit de Sécurité pour identifier les améliorations faciles. Un token qui revient avec des résultats CRITIQUES pour alg: none ou exp manquant nécessite une attention immédiate. Une NOTE sur un algorithme symétrique dans une architecture multi-services vaut la peine d'être discutée lors de la revue. La sortie de l'audit peut être copiée-collée directement dans un document de résultats de sécurité.
Conseils et meilleures pratiques
Utilisez des algorithmes asymétriques (RS256, ES256) pour les API publiques. Les algorithmes HMAC (HS256) utilisent un secret partagé : tout service capable de vérifier un token peut également en créer un. Avec RS256 ou ES256, seul le détenteur de la clé privée peut signer de nouveaux tokens, tandis que tout service peut les vérifier en utilisant la clé publique distribuée. Le mode d'audit de sécurité signale les algorithmes HS avec une NOTE pour cette raison.
Définissez toujours un claim exp. Un token sans expiration reste valide indéfiniment sauf s'il est explicitement révoqué. La section d'Ajout Rapide de Claims fournit des boutons en un clic pour des expirations de 1 heure et 1 jour. Les tokens d'accès devraient expirer en quelques minutes à quelques heures ; utilisez des tokens de rafraîchissement pour les sessions plus longues.
Utilisez jti pour les tokens à usage unique. Le bouton d'ajout rapide + jti (UUID) insère un identifiant de token unique généré par crypto.randomUUID(). Côté serveur, vous pouvez stocker et vérifier cette valeur pour prévenir les attaques de relecture de tokens sur les flux de réinitialisation de mot de passe ou de confirmation d'email.
N'utilisez pas l'algorithme none en production. L'outil crée des tokens non signés lorsque alg: none est sélectionné mais affiche un panneau d'avertissement rouge. Le mode d'audit de sécurité évalue alg: none comme CRITIQUE. Cet algorithme ne devrait apparaître que dans les environnements de test où la vérification des tokens est intentionnellement désactivée.
Problèmes courants et dépannage
"Format JWT invalide. Un JWT devrait avoir 3 parties séparées par des points." — la chaîne que vous avez collée n'a pas exactement deux caractères .. Assurez-vous d'avoir copié le token complet incluant les trois segments. Les JWTs avec un saut de ligne ou un espace en fin échoueront également — les espaces blancs aux bords sont supprimés, mais les espaces intégrés provoqueront cette erreur.
"Encodage Base64 invalide" — l'un des segments du token n'est pas un Base64URL valide. Cela peut se produire si le token a été tronqué lors du copier-coller, ou si la chaîne est un format encodé différent (comme un token de référence opaque d'OAuth qui n'est pas du tout un JWT).
"Secret requis" / "Clé privée requise" — vous avez cliqué sur Encoder sans remplir le champ de clé de signature. Les algorithmes HMAC nécessitent un secret non vide ; les algorithmes asymétriques nécessitent une clé privée PEM.
"Payload JSON invalide" — l'éditeur de payload contient du JSON malformé. Vérifiez les virgules de fin, les clés non entre guillemets ou les chaînes entre guillemets simples. Les boutons d'Ajout Rapide de Claims produisent toujours du JSON valide ; si vous avez édité le payload manuellement, recherchez des erreurs de syntaxe.
La vérification renvoie invalide même avec la clé correcte — assurez-vous d'utiliser le même algorithme avec lequel le token a été signé (affiché dans le champ alg de l'en-tête, que le mode Décoder affiche automatiquement). Pour la vérification asymétrique, assurez-vous de fournir la clé publique, pas la clé privée.
Le token alg: none affiche "Impossible de vérifier" lors de la vérification — les tokens non signés n'ont pas de signature à vérifier. L'outil renvoie un statut "non pris en charge" spécifique pour ce cas et désactive le bouton Vérifier lorsque alg est none.
Confidentialité et sécurité
Le JWT Encoder/Decoder traite tous les tokens et clés localement en utilisant la bibliothèque jose s'exécutant dans votre navigateur. Aucun JWT, secret ou clé privée n'est transmis à un serveur. L'outil n'effectue aucune requête réseau pendant l'encodage, le décodage ou la vérification. L'avis de sécurité jaune affiché dans l'outil est sincère : traitez tout outil en ligne comme non fiable pour les clés de signature de production. Pour le développement et le débogage avec des identifiants non-production, cet outil est sûr à utiliser. Vérifiez le comportement vous-même en ouvrant les DevTools du navigateur et en vérifiant l'onglet Réseau — vous ne verrez aucune requête sortante lors de n'importe quelle opération.
Foire aux questions
L'outil JWT est-il gratuit ? Oui. L'outil est entièrement gratuit sans compte ni inscription requis.
Puis-je l'utiliser hors ligne ? Oui. Une fois la page chargée, tout l'encodage, le décodage et l'audit s'exécute localement. Aucune requête réseau n'est effectuée pour toute opération JWT.
Mes tokens et clés de signature sont-ils en sécurité ? L'outil n'effectue aucune requête réseau pendant le fonctionnement. Vos tokens et clés restent dans votre onglet de navigateur. Cela dit, évitez de saisir des clés privées de production dans tout outil basé sur un navigateur. Utilisez des clés de test ou des identifiants non-production.
Quels algorithmes sont pris en charge ? L'outil prend en charge 13 algorithmes : HS256, HS384, HS512 (HMAC), RS256, RS384, RS512 (RSA PKCS#1), ES256, ES384, ES512 (ECDSA), PS256, PS384, PS512 (RSA-PSS) et none (non signé). La bibliothèque jose gère les opérations cryptographiques.
Peut-il vérifier une signature sans le secret d'origine ? Non. La vérification de signature nécessite le secret de signature (HMAC) ou la clé publique correspondante (asymétrique). Le décodage — lire l'en-tête et le payload — ne nécessite aucune clé et fonctionne immédiatement.
Dans quel format la clé privée doit-elle être ? La signature asymétrique nécessite une clé privée au format PEM PKCS#8 (commençant par -----BEGIN PRIVATE KEY-----). La fonction importPKCS8 de la bibliothèque jose gère l'import. Le format PKCS#1 (commençant par -----BEGIN RSA PRIVATE KEY-----) n'est pas pris en charge ; convertissez avec openssl pkcs8 -topk8 -nocrypt.
Quelle est la différence entre le mode Décoder et le mode Audit de Sécurité ? Le mode Décoder affiche le contenu du token — en-tête, payload, claims et statut d'expiration — et vous permet de vérifier la signature. Le mode Audit de Sécurité se concentre uniquement sur l'identification des faiblesses de sécurité dans la conception du token : claims manquants, algorithmes faibles, tokens expirés et problèmes de configuration. Les deux modes ne nécessitent aucune clé de signature.
Pourquoi l'audit de sécurité signale-t-il mon token HS256 ? L'audit note (gravité NOTE, pas AVERTISSEMENT ou CRITIQUE) que les algorithmes HMAC utilisent un secret partagé, ce qui signifie que tout service disposant du secret peut à la fois vérifier et créer des tokens. Il s'agit d'une considération architecturale pour les systèmes multi-services, pas d'un bug dans votre token. La note recommande des algorithmes asymétriques pour les systèmes où seul un service devrait être capable d'émettre des tokens.
Puis-je décoder un JWT sans connaître l'algorithme ? Oui. L'algorithme utilisé pour signer le token est stocké dans le champ alg de l'en-tête. Le décodage lit d'abord l'en-tête, ce qui révèle l'algorithme. Vous n'avez besoin de connaître l'algorithme (et d'avoir la clé) que si vous souhaitez vérifier la signature.
Comment fonctionne le mode par lots ? Activez le Mode par Lots avec le bouton de basculement, puis entrez un JWT par ligne. Cliquez sur "Traiter tout" pour décoder chaque token. Le tableau de sortie affiche l'algorithme de chaque token (de l'en-tête) et son payload complet sous forme de chaîne JSON. Les tokens malformés affichent une erreur dans la colonne de sortie.
Outils connexes
Le Encodeur/Décodeur Base64 gère l'encodage Base64 sécurisé pour les URL utilisé dans les segments JWT. Le Formateur JSON est utile pour formater le payload JSON décodé lorsque vous souhaitez explorer des structures imbriquées. Le Générateur de mots de passe peut générer des secrets aléatoires forts à utiliser comme clés de signature HMAC.
Essayez JWT Encoder/Decoder maintenant : JWT Encoder/Decoder