Disséquez et vérifiez les JSON Web Tokens pièce par pièce.
Dernière mise à jour
Algorithme—
EncodéCollez un JSON Web Token
header.payload.signature
Décodé
L’en-tête et la charge utile apparaissent ici — les jetons restent dans votre navigateur.
C'est quoi un décodeur JWT ?
Un décodeur JWT découpe un JSON Web Token en ses trois morceaux — header, payload et signature — puis applique un Base64URL-decode sur les deux premiers pour les afficher en JSON lisible. C'est l'outil que l'on sort en permanence pour déboguer un flow de login, une autorisation, des claims de session ou un problème d'expiration.
Décoder un JWT, ce *n'est pas* lui faire confiance. Le header et le payload sont lisibles par conception : ils sont seulement encodés en Base64URL, pas chiffrés. C'est la vérification qui contrôle si le token a bien été signé par l'émetteur attendu et n'a pas été modifié.
Un JWT a la forme header.payload.signature. Chaque partie est encodée en Base64URL et séparée par un point. Le header indique l'algorithme de signature, le payload contient les claims (qui est l'utilisateur, quand le token expire, ce qu'il a le droit de faire), et la signature permet au serveur de prouver que le token n'a pas été altéré.
Ce que vous allez retenir en décodant des JWT
Un JWT, c'est trois parties encodées en Base64URL séparées par des points : header.payload.signature.
Les claims standards comme sub, role, iat, nbf et exp décrivent l'identité, les permissions, la date d'émission et la date d'expiration.
Un payload décodé peut être modifié par n'importe qui — seule la signature permet au serveur de détecter une altération.
Décoder un JWT étape par étape
1
Coller le token complet
Collez le JWT dans le champ d'entrée. Il doit ressembler à xxxx.yyyy.zzzz — trois parties encodées en Base64URL et reliées par des points.
2
Lire le header
Le header indique l'algorithme de signature (alg) et le type de token. Méfiez-vous de "alg": "none" : ça veut dire que le token n'est pas signé et qu'on ne peut pas s'y fier.
3
Lire les claims du payload
Le payload est le JSON qui contient tous les claims. Repérez sub (identifiant utilisateur), exp (expiration), iat (date d'émission), ainsi que les claims maison ajoutés par votre appli, du genre role ou tenant.
4
Vérifier l'expiration
Convertissez le timestamp Unix exp en date — s'il est dans le passé, le token est expiré et une API correctement écrite le rejettera.
5
Vérifier la signature (optionnel)
Si vous avez le secret ou la clé publique, collez-le dans le vérificateur pour confirmer que la signature est valide. Le contenu du token n'est digne de confiance que si la signature passe.
Les claims standards d'un JWT
Voici les claims enregistrés définis par la spec JWT (RFC 7519). Chaque application peut bien sûr ajouter ses propres claims personnalisés à côté.
Claim
Nom
Signification
iss
Issuer
Qui a créé et signé le token
sub
Subject
À qui se rapporte le token — en général un identifiant utilisateur
aud
Audience
À qui le token est destiné
exp
Expiration
Timestamp Unix au-delà duquel le token n'est plus valide
nbf
Not Before
Le token ne doit pas être accepté avant cette date
iat
Issued At
Date de création du token
jti
JWT ID
Identifiant unique — pratique pour gérer la révocation
Le header annonce HS256 (un algorithme à secret partagé). Le payload identifie l'utilisateur, son rôle et l'instant où le token expire. La signature, c'est la troisième partie. (Token d'illustration uniquement — la signature ne sera valide avec aucun secret réel.)
Voir si un token est expiré
Claim du payload
{"exp":1710000000}
exp est un timestamp Unix en secondes. Convertissez-le en date — si elle est passée, le token est expiré et un backend bien écrit le rejettera.
Repérer un dangereux algorithme « none »
Header
{"alg":"none","typ":"JWT"}
Si un serveur accepte "alg": "none", un attaquant peut forger n'importe quel payload sans signature. À rejeter systématiquement en prod.
Les pièges classiques avec les JWT
Mettre des mots de passe, des secrets ou des données personnelles sensibles dans le payload. Un JWT est lisible, pas chiffré.
Décoder un token et le considérer comme valide sans avoir vérifié la signature.
Confondre « lisible en Base64URL » et « chiffré » — les payloads JWT sont volontairement faciles à lire.
FAQ JWT
C'est quoi un JWT ?
JWT signifie JSON Web Token. C'est un format de token compact, signé et URL-safe utilisé pour transporter des claims entre deux parties — le plus souvent entre un serveur et un navigateur, pour représenter un utilisateur connecté.
Comment décoder un JWT ?
Collez le token dans un décodeur JWT, ou découpez-le sur les points et faites un Base64URL-decode sur chacune des deux premières parties. Le header et le payload reviennent en JSON ; la troisième partie, c'est la signature.
Comment savoir si un JWT est expiré ?
Regardez le claim exp dans le payload. C'est un timestamp Unix en secondes. Si l'heure actuelle est postérieure à exp, le token est expiré.
N'importe qui peut-il décoder un JWT ?
Oui. Le header et le payload sont encodés en Base64URL, pas chiffrés. La signature prouve seulement que le token n'a pas été altéré — elle ne masque pas son contenu.
Que veut dire « vérifier un JWT » ?
La vérification consiste à recalculer la signature avec le secret ou la clé publique attendus, puis à la comparer à celle du token. Si ça correspond, on peut faire confiance au payload : il est intact et provient bien de l'émetteur.
Faut-il mettre des mots de passe dans un JWT ?
Non. Toute personne qui possède le token peut lire le payload. N'y stockez que des identifiants et des claims non sensibles, et appuyez-vous sur des durées de vie courtes plus des refresh tokens pour la sécurité.