Décoder les JSON Web Tokens
Un JSON Web Token (JWT) est une chaîne de caractères compacte utilisée pour transmettre des informations d'identité et de permission entre systèmes — le plus souvent en tant qu'en-tête Authorization: Bearer après une connexion. Il ressemble à du texte aléatoire, mais il est composé de trois parties encodées en Base64URL : un en-tête, une charge utile de revendications, et une signature. Ce décodeur JWT divise le jeton, décode les deux premières parties en JSON lisible et explique les revendications importantes. Le décodage et la vérification se font localement, votre jeton n'est donc jamais transmis.
Fonctionnalités
- En-tête et charge utile décodés et formatés pour la lisibilité, chacun avec un bouton pour copier.
- Explication des revendications de temps :
iat,nbf,expetauth_timeconvertis de timestamps Unix en dates dans votre fuseau horaire. - Vérification de l'expiration qui vous indique d'un coup d'œil si le jeton est expiré ou pas encore actif.
- Vérification de la signature HMAC pour HS256, HS384 et HS512 en utilisant l'API Web Crypto de votre navigateur.
- Fonctionne hors ligne après le chargement de la page ; aucune donnée n'est envoyée.
Quand l'utiliser ?
Débogage de l'authentification. Lorsqu'une requête échoue avec une erreur 401 Non autorisé, décodez le jeton pour vérifier s'il a expiré, s'il a été émis pour la bonne audience (aud) ou s'il contient les rôles et les portées (scopes) attendus.
Développement et test d'API. Vérifiez que votre serveur insère les revendications prévues dans le jeton, avec les dates d'expiration correctes, avant de le mettre en production.
Apprendre le fonctionnement d'OAuth et d'OpenID Connect. Les jetons d'identité (ID tokens) et les jetons d'accès (access tokens) des fournisseurs d'identité sont souvent des JWT. Décoder un jeton de test montre quelles informations le fournisseur partage sur un utilisateur.
Anatomie d'un JWT
header.payload.signature
- En-tête — le type de jeton et l'algorithme de signature, par exemple
{"alg":"HS256","typ":"JWT"}. - Charge utile — les revendications. Les revendications enregistrées incluent
iss(émetteur),sub(sujet, généralement l'ID utilisateur),aud(audience),exp,nbf,iatetjti(ID du jeton). Les applications ajoutent des revendications personnalisées telles quenameourole. - Signature — créée en signant
header.payloadavec un secret (HMAC) ou une clé privée (RSA, ECDSA, EdDSA). Si quelqu'un modifie ne serait-ce qu'un seul caractère de l'en-tête ou de la charge utile, la signature ne correspond plus.
Comme la charge utile est seulement encodée, ne mettez jamais de secrets tels que des mots de passe dans un JWT. Pour décoder d'autres données Base64, utilisez l'outil Base64 ; pour inspecter n'importe quel timestamp, utilisez le Convertisseur de timestamp Unix.