ItsMyIp

Décodeur de jeton JWT

Collez un jeton : en-tête, payload et dates décodés instantanément, signature HMAC vérifiable avec votre secret — le tout dans votre navigateur, rien ne quitte cette page.

  • Le décodage se fait entièrement dans votre navigateur : ni le jeton ni le secret ne sont transmis — à ItsMyIp ou à qui que ce soit. Vérifiable dans l'onglet Réseau de vos outils de développement.

01Qu'y a-t-il dans un JWT ?

Un JWT (JSON Web Token) transporte des informations signées entre deux parties : trois segments encodés en base64url, séparés par des points. L'en-tête décrit l'algorithme de signature, le payload contient les « claims » (identité, rôles, dates de validité), et la signature garantit que le contenu n'a pas été modifié. Point essentiel : le contenu est encodé, pas chiffré — n'importe qui peut le lire, c'est précisément ce que fait cette page.

Ce décodeur fonctionne entièrement dans votre navigateur — pratique pour déboguer une authentification (pourquoi ce 401 ?), inspecter les rôles d'un jeton, ou vérifier une expiration. La signature HMAC (HS256/384/512) est vérifiable en collant le secret, via l'API WebCrypto — comme nos générateurs de mots de passe et de clé DKIM, rien n'est transmis.

02Comprendre les claims standards

exp
Date d'expiration (timestamp Unix). Passée cette date, le serveur doit rejeter le jeton. L'alerte principale de ce décodeur.
iat / nbf
iat : date d'émission. nbf (not before) : le jeton est invalide avant cette date — utile pour des jetons pré-générés.
iss / aud
iss : qui a émis le jeton (l'URL du serveur d'authentification). aud : à qui il est destiné — un serveur doit refuser un jeton dont l'audience n'est pas lui.
sub
Le sujet, généralement l'identifiant de l'utilisateur authentifié.
alg
Dans l'en-tête : l'algorithme de signature. HS256 = HMAC avec secret partagé ; RS256/ES256 = signature asymétrique avec paire de clés ; none = non signé (danger).
kid
Dans l'en-tête : l'identifiant de la clé utilisée, pour que le serveur retrouve la bonne clé publique de vérification (rotation).

03Décoder n'est pas faire confiance

Lire un jeton ne prouve rien : seule la vérification de la signature garantit qu'il a été émis par le bon serveur et n'a pas été altéré. Côté serveur, il faut aussi valider exp, aud et iss — un jeton parfaitement signé mais expiré ou destiné à un autre service doit être rejeté.

Deux pièges classiques : accepter alg=none (jeton non signé) parce que la bibliothèque le permet par défaut, et confondre encodage et chiffrement — ne mettez jamais de secret (mot de passe, clé API) dans un payload JWT : tout le monde peut le lire, comme cette page vous le montre.

04Questions fréquentes

Est-ce prudent de coller un jeton ici ?

Le décodage se fait entièrement dans votre navigateur : aucune requête réseau ne part de cette page, ce qui se vérifie dans l'onglet Réseau des outils de développement. Cela dit, la prudence de base reste valable : un jeton de production en cours de validité est un sésame — évitez de le coller où que ce soit hors de vos propres outils, et privilégiez des jetons de test ou expirés quand c'est possible.

Pourquoi la signature RS256 n'est-elle pas vérifiable ici ?

HS256 signe avec un secret partagé : quiconque connaît le secret peut vérifier, c'est ce que fait cette page via WebCrypto. RS256, ES256 et consorts signent avec une clé privée et se vérifient avec la clé publique correspondante, généralement publiée par le serveur d'authentification à une URL JWKS. La récupérer nécessiterait une requête réseau — contraire à la promesse « rien ne part de cette page ».

Un JWT peut-il être révoqué ?

Pas nativement : c'est sa faiblesse structurelle. Un jeton signé reste valide jusqu'à son exp, même si l'utilisateur est banni entre-temps. Les parades : des jetons d'accès courts (5–15 minutes) renouvelés par un refresh token révocable, ou une liste de révocation côté serveur — qui réintroduit l'état que le JWT prétendait éliminer.

JWT ou cookie de session : que choisir ?

La session en base avec un cookie httpOnly reste le choix le plus simple et le plus sûr pour une application web classique : révocation immédiate, pas de données côté client. Le JWT brille quand plusieurs services doivent vérifier l'identité sans partager une base de sessions (microservices, API tierces, mobile). Le pire des deux mondes : stocker un JWT longue durée dans localStorage, exposé au moindre XSS.

Que signifie l'attaque « alg none » ?

La spécification JWT autorise alg=none pour les jetons non signés. Certaines bibliothèques historiques acceptaient un jeton où l'attaquant avait simplement remplacé alg par none et supprimé la signature — permettant de forger n'importe quelle identité. Les bibliothèques modernes exigent une liste blanche d'algorithmes ; si ce décodeur affiche alg=none sur un jeton accepté par votre serveur, corrigez d'urgence.

05Autres outils