Aller au contenu
OpsKit

Décodeur JWT

Collez un JWT pour voir son en-tête et ses claims. Les dates d'expiration et d'émission sont converties en dates lisibles et les claims enregistrés sont expliqués. Le jeton reste dans votre navigateur.

Tout se passe dans votre navigateur. Cette page est un fichier statique. Ce que vous saisissez reste dans l'onglet, n'est jamais envoyé à un serveur et disparaît à la fermeture — coller un vrai jeton ou une vraie configuration ne présente donc aucun risque.

Quand cela sert

  • Une requête renvoie 401 et vous devez savoir si le jeton a expiré ou si l'audience est incorrecte.
  • Vérifier quels scopes ou rôles un jeton d'accès porte réellement avant d'accuser l'API.
  • Confirmer l'émetteur et l'identifiant de clé pendant le débogage d'une intégration OIDC.

Exemples concrets

Un jeton d'accès standard

Entrée
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NSIsIm5hbWUiOiJKYW5lIiwiaWF0IjoxNzAwMDAwMDAwLCJleHAiOjE3MDAwMDM2MDB9.signature
Résultat
sub: 12345 · exp: 2023-11-14 23:13 UTC

En-tête, charge utile et signature, séparés par des points.

Lire l'expiration

Entrée
"exp": 1700003600
Résultat
2023-11-14 23:13 UTC

exp compte des secondes depuis l'époque Unix, pas des millisecondes. Une valeur en millisecondes atterrit en l'an 55000 : c'est un bug fréquent.

L'en-tête dangereux

Entrée
{"alg":"none"}
Résultat
Jeton non signé

Les bibliothèques qui honorent alg: none acceptent des jetons forgés. Fixez toujours l'algorithme attendu côté serveur.

Là où l'on se trompe

Croire que la charge utile est privée

Un JWT est signé, pas chiffré. Quiconque détient le jeton peut lire tous les claims, exactement comme le fait cette page. N'y mettez jamais rien de confidentiel.

Se fier au badge de validité d'un décodeur

Décoder ne prouve rien sur l'authenticité. Un jeton peut être parfaitement lisible et totalement forgé ; seule la vérification de signature sur votre serveur tranche.

Confondre exp avec un problème de décalage d'horloge

Si un jeton expire « immédiatement », comparez le claim iat à l'horloge de votre serveur. Quelques minutes d'écart entre machines suffisent à rejeter des jetons pourtant valides.

Questions fréquentes

Mon jeton est-il envoyé quelque part ?

Non. La page est statique et le décodage se fait dans votre navigateur avec un décodage Base64 et une analyse JSON. Rien n'est journalisé ni transmis, ce que vous pouvez confirmer dans le panneau réseau.

Pourquoi cet outil ne peut-il pas me dire si la signature est valide ?

La vérification requiert le secret de signature ou la clé publique de l'émetteur. Coller un secret de signature de production dans une page web serait une habitude bien pire que la commodité qu'elle apporte.

Quelle est la différence entre exp et nbf ?

exp est le moment où le jeton cesse d'être accepté ; nbf celui où il commence à l'être. Un jeton émis à l'avance peut avoir un nbf dans le futur et sera rejeté jusque-là.

Outils liés