Encoders & Utilities

Décodeur JWT

Décode l'en-tête et le payload JWT en local.

À propos de cet outil

Un JSON Web Token (RFC 7519) est composé de trois segments encodés en Base64url joints par des points : en-tête, charge utile et signature. JWT Decoder divise le jeton, décode les deux premiers segments en JSON, les formate et calcule les revendications liées au temps (iat, exp, nbf) comme des horodatages lisibles par l'humain. Les revendications enregistrées standards (iss, sub, aud, jti) sont étiquetées avec leur signification. Le décodage s'exécute entièrement dans votre navigateur — votre jeton ne quitte jamais la page.

L'en-tête vous indique l'algorithme de signature (alg : HS256, RS256, ES256, etc.) et le kid (ID de clé) optionnel. La charge utile contient les revendications de l'application — ID utilisateur, rôles, expiration. La signature est affichée comme un blob Base64 ; nous ne la vérifions délibérément pas sur cette page car la vérification nécessite le secret ou la clé publique de l'émetteur, qui ne devrait jamais être collé dans un outil tiers. Le jeton est traité comme des données uniquement.

Quand utiliser cet outil

  • Lire un jeton de votre propre service. Inspectez quelles revendications vous émettez réellement — repérez rapidement les champs manquants, les mauvaises audiences ou les valeurs par défaut surprenantes.
  • Débogage des réponses "401 Unauthorized". Vérifiez l'expiration, l'émetteur, l'audience et la portée par rapport à ce que le serveur attend.
  • Vérifier une intégration tierce. Lorsqu'un fournisseur OAuth vous remet un jeton ID, décodez la charge utile pour voir quelles revendications utilisateur ils regroupent.
  • Repérer la confusion d'algorithme. Si alg est none ou diffère de manière inattendue entre les jetons, votre bibliothèque d'authentification est probablement mal configurée.

Pourquoi nous ne validons pas les signatures

La vérification de signature JWT nécessite le secret (pour les algorithmes HMAC) ou la clé publique de l'émetteur (pour RSA/ECDSA). Coller l'un ou l'autre dans un outil web est une erreur de sécurité — le secret compromettrait chaque jeton émis ; la clé publique, bien que moins sensible, peut toujours être privée. Le décodeur confirme la structure et révèle les revendications ; pour la vraie vérification, utilisez le SDK fourni avec votre bibliothèque d'authentification (jsonwebtoken, pyjwt, jose) à l'intérieur de votre propre code.

Questions fréquentes

Est-il sûr de coller mon JWT ici ?

Le décodage se produit entièrement en JavaScript dans votre navigateur — aucun appel réseau n'est effectué, aucune journalisation ne se produit côté serveur. Cela dit, les JWT en production devraient être traités comme des identifiants : ne collez pas un jeton de longue durée d'un service que vous ne contrôlez pas dans tout outil tiers, y compris le nôtre. Pour les jetons de dev/staging ou les jetons expirés, le décodage ici est bien.

Pourquoi la signature est-elle affichée mais non vérifiée ?

Parce que la vérification nécessite la clé de signature, et coller une clé de signature dans un outil web serait une erreur grave. La signature est affichée en Base64 afin que vous puissiez voir qu'elle existe et a la bonne longueur pour l'algorithme, mais la valider réellement par rapport à un secret HMAC (HS256) ou à une clé publique (RS256/ES256) appartient à votre application, pas à un outil de navigateur.

Que signifie "alg : none" ?

Un JWT non signé. L'en-tête dit explicitement qu'aucun algorithme n'a été appliqué, donc le segment de signature est vide. alg : none existe dans la spécification mais ne devrait jamais apparaître en production — c'est la cause racine de la fameuse vulnérabilité "JWT none-algorithm" où une bibliothèque accepte none comme valide. Si vous le voyez dans un vrai jeton d'un vrai service, c'est un bug sérieux.

Quelle est la différence entre exp, iat et nbf ?

iat (issued-at) est quand le jeton a été créé. nbf (not-before) est le moment le plus tôt où le jeton peut être utilisé — généralement égal à iat mais peut être dans le futur pour une activation différée. exp (expiration) est quand le jeton cesse d'être valide. Tous les trois sont des horodatages Unix en secondes. Un vérificateur bien comporté vérifie nbf ≤ maintenant ≤ exp à chaque requête.