DĂ©codez un JSON Web Token et consultez l'en-tĂȘte et la charge utile.
Tous les calculs sont effectués localement dans votre navigateur. Aucune donnée n'est envoyée au serveur.
Les résultats sont fournis à titre informatif. Vérifiez-les auprÚs d'autres sources.
Lire un JSON Web Token
Un JWT est fait de trois segments Base64url sĂ©parĂ©s par des points : un en-tĂȘte indiquant le mode de signature, une charge utile de revendications, et une signature portant sur les deux premiers. Le dĂ©codage montre ce que le jeton affirme, pas si c'est vrai.
Comment ça marche
- DĂ©coupe le jeton sur ses deux points en en-tĂȘte, charge utile et signature.
- Décode les deux premiers segments depuis le Base64url vers du JSON et les met en forme.
- Affiche les revendications temporelles standard â exp, iat, nbf â sous forme de dates, puisqu'elles sont stockĂ©es en secondes Unix.
- Ne touche pas à la signature : la vérifier exige le secret ou la clé publique de l'émetteur, qu'il ne faut jamais coller dans une page web.
jeton = base64url(en-tĂȘte) . base64url(charge) . base64url(signature) signature = HMAC ou RSA/ECDSA sur les deux premiers segments exp/iat = secondes depuis 1970-01-01T00:00:00Z (pas des millisecondes)
Exemple chiffré
L'en-tĂȘte de presque tous les jetons HS256 existants, dĂ©codĂ© Ă la main.
- JSON de l'en-tĂȘte : {"alg":"HS256","typ":"JWT"}
- encodage Base64 : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
- notez que le remplissage = final est retirĂ© â JWT l'omet toujours
- une charge utile {"sub":"1234567890","iat":1516239022}
- 1516239022 secondes â 2018-01-18T01:30:22Z
Le jeton décodé dit qu'il a été signé en HMAC-SHA256, qu'il concerne le sujet 1234567890 et qu'il a été émis le 18 janvier 2018. Son authenticité est une question distincte, à laquelle répond la signature.
Lire le résultat
- Décoder n'est pas vérifier. Un jeton dont la charge dit admin: true ne prouve rien tant que la signature ne correspond pas à une clé de confiance. Ne fondez jamais une décision d'autorisation sur une charge décodée seule.
- Ne collez pas de jetons de production dans des décodeurs en ligne. Celui-ci s'exécute entiÚrement dans votre navigateur et n'envoie rien, mais ce n'est pas vrai de tous les sites, et un jeton bearer est un mot de passe.
- La charge utile est encodée, pas chiffrée. Quiconque détient le jeton lit toutes ses revendications : n'y mettez jamais de secret.
- VĂ©rifiez exp face Ă l'heure courante et rejetez ce qui est expirĂ©. VĂ©rifiez aussi iss et aud â une signature valide du mauvais Ă©metteur reste le mauvais jeton.
- alg: none est une valeur rĂ©elle et une attaque rĂ©elle. Un vĂ©rificateur qui fait confiance au choix d'algorithme de l'en-tĂȘte peut se voir dire de ne rien vĂ©rifier.
Questions fréquentes
- Cet outil peut-il me dire si mon jeton est valide ?
- Non, et aucun dĂ©codeur ne le peut sans votre clĂ©. Il montre ce que le jeton affirme. La validitĂ© suppose que la signature corresponde, que le jeton ne soit pas expirĂ© et que l'Ă©metteur et l'audience soient ceux attendus â des contrĂŽles qui appartiennent Ă votre serveur, via une bibliothĂšque.
- Est-il sûr de coller mon jeton ici ?
- Cette page décode dans votre navigateur et ne transmet rien. Malgré tout, la bonne habitude est d'utiliser des jetons d'un environnement de test. Traitez tout jeton donnant un accÚs réel comme un mot de passe.
- Pourquoi ma date exp tombe-t-elle en 1970 ?
- Vous passez presque certainement des millisecondes lĂ oĂč la spĂ©cification attend des secondes. Date.now() en JavaScript renvoie des millisecondes ; divisez par 1000 avant de placer la valeur dans une revendication.