Décodeur JWT

Collez un JWT ci-dessous pour décoder et inspecter son en-tête, payload et signature. Note : cet outil ne vérifie pas les signatures. Tout le traitement se fait localement dans votre navigateur.

Copié !

Informations du jeton

Qu'est-ce qu'un JWT ?

Un JSON Web Token (JWT) est un format de jeton compact et sûr pour les URL, utilisé pour transmettre des informations de manière sécurisée entre les parties. Il se compose de trois parties séparées par des points (.) :

  1. En-tête — algorithme et type de jeton (ex. HS256, RS256)
  2. Charge utile — revendications/données (ex. sub, iat, exp)
  3. Signature — vérifie que le jeton n'a pas été altéré

Décoder un jeton ne prouve rien à son sujet, car l'en-tête et la charge utile ne sont que du base64url et n'importe qui peut les réécrire. C'est la signature qui compte : collez le secret partagé et la page la vérifie ici, dans votre navigateur, pour HS256, HS384 et HS512. Les autres algorithmes signent avec une clé privée et vérifient avec une clé publique, ce qu'une page comme celle-ci ne devrait pas vous demander de coller. Les heures s'affichent sur votre horloge, écart compris, car c'est souvent l'expiration que vous cherchez.

Note : Cet outil ne fait que décoder le jeton. Il ne vérifie pas la signature.

Comment stockez-vous cela, au juste ?

Les empreintes, les jetons et les mots de passe ne valent que le code qui les entoure : un facteur de coût laissé par défaut, un jeton dont personne ne vérifie l'expiration, un secret poussé dans le dépôt. Nous auditons et durcissons les applications, et nous vous disons ce qu'un attaquant atteint en premier.

Réserver un audit de sécurité

Questions fréquentes

Décoder un jeton signifie-t-il qu'il est valide ?
Non, et c'est l'erreur qu'il vaut la peine d'éviter. L'en-tête et la charge utile ne sont que du base64url : n'importe qui peut les réécrire et produire quelque chose qui se décode parfaitement. Seule la signature indique que le jeton vient bien de qui il prétend. Collez le secret et cette page la vérifie.
Quels algorithmes pouvez-vous vérifier ici ?
HS256, HS384 et HS512, qui signent avec un secret partagé. Les jetons RS, ES et PS signent avec une clé privée et se vérifient avec une clé publique, et coller l'une ou l'autre dans une page web est une habitude à ne pas prendre. Pour ceux-là, vérifiez dans votre propre code avec le jeu de clés publié.
Que signifie un jeton dont alg vaut none ?
Qu'il ne porte aucune signature exploitable, donc que la charge utile peut affirmer n'importe quoi. Cela existe dans la spécification pour des jetons protégés autrement, et c'est une attaque bien connue quand une bibliothèque l'accepte par défaut. Si vous le voyez sur un vrai jeton, traitez-le comme une entrée non fiable.
Est-il sûr de coller un vrai jeton ici ?
La page ne téléverse jamais rien, donc rien ne quitte votre navigateur. Cela dit, un jeton actif est un moyen d'accès, et le champ du secret est délibérément exclu des réglages enregistrés et de la chaîne de requête pour ne pas être stocké ni partagé par accident. Révoquez tout ce que vous collez dans un endroit que vous ne contrôlez pas.
Pourquoi l'expiration affiche-t-elle un écart de temps ?
Parce que c'est généralement la question. Un jeton expiré il y a quatre minutes et un qui expire dans quatre heures se ressemblent presque en chiffres, la page affiche donc les deux sur votre horloge et écrit l'écart. Les heures peuvent s'afficher en UTC si vous comparez à un journal serveur.