Mode d’emploi
- Copiez un jeton depuis un en-tête Authorization, un cookie ou les outils de développement de votre navigateur. Le préfixe « Bearer » est supprimé automatiquement.
- Collez-le dans le champ. L’en-tête et le contenu s’affichent au format JSON.
- Consultez la ligne d’état et le tableau des claims pour voir l’émetteur, l’audience et les dates d’expiration dans votre fuseau horaire.
- Copiez le JSON de l’en-tête ou du contenu si vous en avez besoin ailleurs.
Fonctionnement
Un JSON Web Token (JWT, RFC 7519) sous sa forme signée courante (JWS) se compose de trois parties encodées en base64url et séparées par des points. L’en-tête indique l’algorithme utilisé pour signer le jeton, par exemple HS256 (HMAC avec SHA-256) ou RS256 (RSA). La charge utile contient les claims : des informations sur l’utilisateur et le jeton lui-même. La signature permet au serveur de vérifier que l’en-tête et la charge utile n’ont pas été modifiés.
L’en-tête et la charge utile sont encodés, mais pas chiffrés. Toute personne disposant du jeton peut en lire le contenu, et c’est précisément ce que fait cet outil. Ne mettez pas de secrets dans les charges utiles JWT.
Le décodage ne prouve rien sur un jeton. Sans la clé de l’émetteur, personne ne peut savoir si la signature est authentique. Le résultat affiché ici ne doit donc jamais servir à décider si un jeton est fiable. La vérification doit être effectuée sur votre serveur, avec une bibliothèque JWT à jour qui contrôle la signature, l’algorithme, exp, nbf, iss et aud.
Les claims enregistrés sont expliqués dans le tableau. exp, nbf et iat sont des valeurs NumericDate : le nombre de secondes écoulées depuis le 1er janvier 1970 UTC. L’outil les convertit en dates dans votre fuseau horaire et les compare à l’horloge de votre appareil, sans la petite marge de tolérance que les serveurs accordent souvent aux décalages d’horloge. Si votre horloge est incorrecte, le statut le sera aussi.
Les jetons à cinq parties sont des JWT chiffrés (JWE). Leur charge utile ne peut pas être décodée sans la clé ; l’outil indique donc uniquement le format.
Exemples
Pourquoi mon API renvoie-t-elle une erreur 401 ?
Décodez le jeton d’accès envoyé par votre application. Si la ligne d’état indique « Expiré le… », le client doit renouveler le jeton. Si aud indique https://api.example.com alors que vous appelez https://api2.example.com, l’audience ne correspond pas.
Vérifier un jeton d’identification OpenID Connect
Un jeton d’identification provenant d’un fournisseur de connexion contient iss (le fournisseur), sub (l’identifiant utilisateur stable), aud (l’identifiant de votre client), iat et exp, ainsi que des claims de profil comme email et name. Le décoder permet de voir quels claims votre application reçoit réellement.
Lire un claim d’horodatage
Une charge utile contient "exp": 1735689600. Le tableau des claims l’affiche comme le 1er janvier 2025 à 00:00:00 UTC, converti dans votre heure locale, et indique depuis combien de temps cette date est passée ou dans combien de temps elle arrivera.
Foire aux questions
Cet outil vérifie-t-il la signature du JWT ?
Non. Il décode uniquement l’en-tête et la charge utile. La vérification nécessite le secret (pour HS256) ou la clé publique de l’émetteur (pour RS256 et ES256) et doit être effectuée sur votre serveur avec une bibliothèque fiable.
Puis-je coller mon jeton ici sans risque ?
Le jeton est décodé dans votre navigateur et n’est envoyé nulle part. Malgré cela, un jeton valide fonctionne comme un mot de passe jusqu’à son expiration. Privilégiez donc les jetons expirés ou de test et ne collez jamais de jetons de production dans des outils auxquels vous ne faites pas confiance.
Pourquoi tout le monde peut-il lire le contenu ?
Les JWT signés sont encodés en base64url, ce qui ne constitue pas un chiffrement. La signature protège le jeton contre les modifications, mais pas contre la lecture. Si le contenu doit rester secret, utilisez un JWT chiffré (JWE) ou conservez les données sur le serveur.
Que signifie « exp » et dans quelle unité est-il exprimé ?
exp indique l’heure d’expiration au format NumericDate : le nombre entier de secondes (et non de millisecondes) écoulées depuis le 1970-01-01 00:00:00 UTC. Le jeton doit être rejeté à partir de cet instant.
Pourquoi le message « base64url invalide » s’affiche-t-il ?
Le jeton a probablement été tronqué ou modifié lors de la copie, par exemple si ses derniers caractères ont été perdus, si des guillemets ont été ajoutés autour ou s’il a été encodé dans une URL (%2E à la place d’un point). Collez le jeton brut exactement tel qu’il a été émis.
Confidentialité
Le jeton est décodé avec JavaScript dans votre navigateur. Il n’est envoyé à aucun serveur, n’est pas stocké et n’est pas inclus dans les statistiques. Aucune vérification de signature ni recherche de clé n’est effectuée : aucune requête réseau n’est donc envoyée.