SomeeLab.tools

Décodeur JWT

Lisez l’en-tête et la charge utile d’un JSON Web Token et voyez quand il expire. Gratuit, sans inscription, décodé dans votre navigateur.

La signature est affichée mais pas vérifiée. La vérifier demande la clé de signature, et une clé de signature n’a rien à faire dans une page web. Décoder ne prouve pas qui a émis le jeton.

Ce que contient un jeton

Un JWT comporte trois parties séparées par des points. Les deux premières sont du JSON encodé en Base64url que tout le monde peut lire ; la troisième est la signature.

  • En-tête — l’algorithme de signature (alg) et le type (typ). Les services qui font tourner leurs clés ajoutent un kid désignant celle qui a servi.
  • Charge utile — les revendications. sub identifie l’utilisateur, iss l’émetteur, aud le destinataire prévu, et exp, iat et nbf portent les dates.
  • Signature — les deux premières parties signées avec une clé.

La spécification définit les revendications temporelles comme des entiers en secondes. Un jeton qui y a mis des millisecondes apparaît ici des milliers d’années dans le futur, ce qui trahit un défaut du côté de l’émetteur.

Décoder n’est pas vérifier

Lire le contenu ici ne dit rien de l’authenticité du jeton. La charge utile n’est pas verrouillée, n’importe qui peut la réécrire, et seul le détenteur de la clé s’aperçoit que la signature ne correspond plus.

C’est pourquoi le serveur doit vérifier la signature à chaque requête, sans se fier au champ alg. Fixez l’algorithme attendu côté serveur et refusez tout jeton annonçant none ou s’écartant de ce qui est prévu. Les implémentations qui suivent l’en-tête à l’aveugle sont la voie classique par laquelle passent des jetons non signés.

Pas de secrets dans la charge utile

Quiconque détient le jeton, y compris en ouvrant les outils de développement du navigateur, lit la charge utile. S’il s’y trouve un numéro d’identité, une note d’administration interne ou des données de paiement, considérez-les comme publiés.

Ce qui a sa place ici, c’est ce que vous laisseriez volontiers voir au porteur : un identifiant d’utilisateur, des noms de rôle, une date d’expiration. Le reste reste sur le serveur et se consulte au besoin.

Avant de coller le jeton de quelqu’un d’autre

Cet outil n’envoie le jeton nulle part. Un jeton encore valide reste pourtant un moyen d’authentification à lui seul : collé dans une messagerie ou un suivi de tickets, il devient utilisable par quiconque le lit. En cas de fuite, révoquez la session au lieu d’attendre l’expiration.