Mon JWT est-il envoyé à un serveur ?+−
Non. Le décodage se fait entièrement dans votre navigateur grâce aux API Web atob et TextDecoder - le jeton, ainsi que tout secret ou clé publique que vous collez pour vérifier une signature, ne quittent jamais votre appareil.
Cet outil peut-il vérifier la signature ?+−
Oui, en bonus et au mieux. Si vous connaissez le secret HMAC (pour HS256/384/512) ou collez la clé publique encodée en PEM (pour RS256/384/512 ou ES256/384/512), l'outil vérifie la signature localement avec l'API Web Crypto du navigateur. Sans clé, seuls l'en-tête et le payload sont décodés et affichés - le décodage ne nécessite jamais la clé de signature.
Pourquoi l'algorithme affiché est-il "none" ?+−
"alg": "none" signifie que le jeton n'est pas signé du tout - n'importe qui aurait pu y écrire n'importe quelles revendications. Certaines bibliothèques ont historiquement accepté ces jetons non signés comme valides, ce qui est devenu un contournement d'authentification bien connu. Cet outil le signale toujours de façon visible pour que vous ne le manquiez pas.
Que signifient exp, iat et nbf ?+−
Ce sont les revendications d'horodatage standard de la RFC 7519 : iat indique quand le jeton a été émis, nbf le moment le plus tôt où il devient valide, et exp quand il cesse de l'être. Les trois sont stockées comme un NumericDate - des secondes depuis l'epoch Unix - que cet outil convertit en une date lisible et un temps relatif comme "expire dans 2 heures".
Pourquoi puis-je lire le payload sans secret ?+−
Parce que l'en-tête et le payload d'un JWT sont seulement encodés en base64url, pas chiffrés - l'encodage n'est pas la confidentialité. Quiconque possède le jeton peut déjà lire ses revendications ; la signature prouve seulement qu'elles n'ont pas été modifiées par quelqu'un qui ne détient pas la clé. Ne mettez jamais dans un payload JWT quelque chose qu'un attaquant ne devrait pas pouvoir lire.
Mon jeton a 3 parties mais ne se décode toujours pas - pourquoi ?+−
Chacun des trois segments (en-tête, payload, signature) doit être du texte base64url valide, et l'en-tête et le payload doivent se décoder en JSON valide. Cet outil décode l'en-tête et le payload indépendamment et vous dit précisément lequel est cassé et pourquoi (mauvais base64, mauvais UTF-8, ou JSON invalide), au lieu d'échouer silencieusement.