Décodeur JWT
Collez un jeton pour voir ce qu’il contient et quand il expire. Si vous avez la clé, vous pouvez aussi vérifier la signature.
Le décodage se fait dans votre navigateur. Rien n’est envoyé.
Validité
…
Décodé, non vérifié : n’importe qui peut créer un jeton avec ce contenu. Saisissez la clé ci-dessous pour vérifier la signature.
En-tête
{
"alg": "HS256",
"typ": "JWT"
}Charge utile
{
"iss": "https://example.com",
"sub": "1234567890",
"aud": "quaestio",
"name": "Ada Lovelace",
"iat": 1757000000,
"nbf": 1757000000,
"exp": 4102444800,
"jti": "4f1c2a9e"
}Champs et claims
- algalgorithme de signature
- HS256
- typtype de jeton
- JWT
- issémetteur
- https://example.com
- subsujet, généralement l’identifiant de l’utilisateur
- 1234567890
- audaudience à laquelle le jeton est destiné
- quaestio
- expheure d’expiration
- 4102444800
- nbfpas valide avant
- 1757000000
- iatémis le
- 1757000000
- jtiidentifiant unique du jeton
- 4f1c2a9e
- Signature
- 32 octets
Vérifier la signature
La clé est utilisée uniquement dans votre navigateur et n’est pas enregistrée.
Comment ça marche
Un JSON Web Token (JWT, RFC 7519) comporte trois parties séparées par des points : l’en-tête, la charge utile et la signature. L’en-tête et la charge utile sont du JSON encodé en base64url, une variante de base64 qui utilise - et _ au lieu de + et / et omet le remplissage. Tout le monde peut en lire le contenu ; il n’est pas chiffré.
L’en-tête indique l’algorithme (alg) et souvent le type (typ) et l’identifiant de clé (kid). La charge utile contient des claims, des affirmations sur l’utilisateur ou la session. La norme en enregistre sept : iss (émetteur), sub (sujet), aud (audience), exp (expiration), nbf (pas avant), iat (émis le) et jti (identifiant du JWT). Les autres claims sont laissés au choix de l’émetteur.
Les heures dans exp, nbf et iat sont des secondes depuis le 1er janvier 1970 UTC. Un jeton ne doit pas être accepté à partir de son heure exp, ni avant son heure nbf. Le décodeur les compare à l’horloge de votre appareil : une horloge qui n’est pas à l’heure donne un statut erroné.
Décoder n’est pas vérifier. La signature montre que le jeton a été émis par quelqu’un qui détient la clé et que le contenu n’a pas été modifié, mais cela ne peut être contrôlé qu’avec la clé. HS256, HS384 et HS512 utilisent un secret partagé (HMAC). RS et PS utilisent RSA, ES des courbes elliptiques (ECDSA avec P-256, P-384 ou P-521) et EdDSA Ed25519 ; ceux-ci se vérifient avec la clé publique au format PEM ou JWK, que les émetteurs publient souvent sous forme de JWK Set.
Un jeton avec alg none n’a pas de signature et ne doit jamais être accepté par un serveur. Plusieurs vulnérabilités connues venaient de bibliothèques qui acceptaient none, ou qui laissaient un attaquant remplacer RS256 par HS256 et signer avec la clé publique utilisée comme secret.
Un jeton sert souvent de clé d’accès à un compte. Ici, tout se passe dans votre navigateur avec sa cryptographie intégrée (WebCrypto), et ni le jeton, ni le secret, ni la clé ne sont envoyés où que ce soit. Malgré tout, ne collez jamais un jeton actif ou un secret dans un site auquel vous ne faites pas confiance, et ne collez jamais une clé privée : la vérification n’a besoin que de la clé publique.