Décodeur JWT : en-tête, payload et expiration

Décodez instantanément les JSON Web Tokens (JWT). Affichez l'en-tête et la charge utile en toute sécurité.

Décodeur JWT

Signaler un problème

Trouvé un bug ou une suggestion pour Décodeur JWT : en-tête, payload et expiration ? Faites-le nous savoir !

Comment ce décodeur JWT lit un token

Un JSON Web Token regroupe trois éléments dans une seule chaîne : un en-tête, une charge utile et une signature. Ce décodeur sépare un token encodé en ces trois parties, reconvertit l'en-tête et la charge utile en JSON lisible, puis affiche l'algorithme, la date d'émission et la date d'expiration, pour que vous puissiez inspecter un token sans écrire de code.

En-tête, charge utile et signature

Un token est divisé en trois parties par deux points : en-tête.charge_utile.signature. Les deux premières parties sont du JSON encodé en base64url, donc les décoder est une opération réversible, pas un chiffrement. L'en-tête indique l'algorithme de signature, le champ alg, par exemple HS256 ou RS256, ainsi que le type de token. La charge utile porte les claims : un identifiant de sujet, des champs propres à l'application, et généralement iat (date d'émission) et exp (date d'expiration) stockés en secondes Unix. La signature est une valeur cryptographique calculée à partir de l'en-tête et de la charge utile ; la vérifier demande la clé secrète ou privée qui l'a créée, donc lire le contenu d'un token est différent de vérifier son authenticité. Certains tokens sont signés avec alg à none et n'ont que deux parties, en-tête.charge_utile ; le décodeur accepte aussi cette forme plus courte et laisse le segment de signature vide. Le base64url se distingue du base64 classique par un tiret et un tiret bas à la place du plus et de la barre oblique, et il se passe le plus souvent du signe égal utilisé comme remplissage.

Exemple concret

Collez un token comme celui ci-dessous : il se sépare en trois segments colorés, puis l'en-tête et la charge utile s'affichent en JSON formaté.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NjEwMjkzODQ3IiwibmFtZSI6IkNhbWlsbGUgRHVib2lzIiwiaWF0IjoxNzA0NzE1MjAwLCJleHAiOjE3MTI0OTEyMDB9.Z5HEtCtfzS_4D7GJDkZ0yBsnLtw

{
  "alg": "HS256",
  "typ": "JWT"
}

{
  "sub": "5610293847",
  "name": "Camille Dubois",
  "iat": 1704715200,
  "exp": 1712491200
}

Le badge Algorithm affiche HS256, lu dans l'en-tête. La valeur iat correspond au 8 janvier 2024 et la valeur exp au 7 avril 2024 ; cette date étant passée, le badge Status affiche EXPIRED. Rien de tout cela ne se passe sur un serveur : le décodage s'exécute dans le navigateur, et l'outil ne vérifie jamais l'authenticité de la signature puisqu'il n'a pas accès à la clé qui l'a créée.

Questions Fréquentes