À quoi ça sert
Un JSON Web Token (JWT, RFC 7519) est une chaîne compacte et compatible URL en trois parties séparées par des points : un en-tête qui indique l’algorithme de signature, un payload de claims et une signature des deux premières parties. Les API utilisent les JWT comme jetons bearer, les fournisseurs d’identité comme ID tokens.
Cet outil crée et signe un jeton à partir d’un payload JSON. Il prend en charge :
- HS256, HS384, HS512 : HMAC avec un secret partagé, en texte ou en Base64.
- RS256, RS384, RS512 et PS256, PS384, PS512 : signatures RSA avec une clé privée PEM.
- ES256, ES384, ES512 : signatures ECDSA avec une clé privée EC.
Mode d’emploi
- Écrivez le payload sous forme d’objet JSON ou cliquez sur Exemple.
- Choisissez l’Algorithme puis saisissez le secret ou collez la clé privée PEM en haut de la zone de saisie.
- Si besoin, mettez iat à l’heure actuelle, ajoutez une expiration (exp) ou des champs d’en-tête supplémentaires comme un identifiant de clé.
- Copiez le jeton depuis la sortie. Collez-le dans le décodeur JWT pour l’inspecter.
Exemple
Avec le secret your-256-bit-secret, le payload ci-dessous signé en HS256 donne le célèbre jeton d’exemple de jwt.io :
{"sub":"1234567890","name":"John Doe","iat":1516239022}
L’en-tête est toujours écrit {"alg":"HS256","typ":"JWT"} suivi des champs supplémentaires ajoutés ; alg suit toujours l’algorithme choisi.
Bonnes pratiques
Gardez des jetons de courte durée avec une claim exp, et définissez iss et aud pour qu’un jeton destiné à un service ne puisse pas être rejoué sur un autre. Côté serveur, vérifiez toujours la signature avec une liste explicite d’algorithmes autorisés et refusez none. Les secrets HMAC doivent être longs et aléatoires, au moins aussi longs que la sortie du hachage (32 octets pour HS256).
FAQ
› Quel algorithme choisir ?
Celui que votre serveur vérifie. HS256 utilise un secret partagé et est courant au sein d'un même système. RS256 et ES256 signent avec une clé privée et chacun peut vérifier avec la clé publique, ce qui convient aux jetons contrôlés par plusieurs services. ES256 produit des signatures bien plus courtes que RS256.
› Quels formats de clé privée sont acceptés ?
Les clés PEM au format PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) et SEC1 EC (BEGIN EC PRIVATE KEY). Les clés chiffrées doivent d'abord être exportées sans phrase secrète. Pour ES256, ES384 et ES512, la clé doit être sur la courbe P-256, P-384 ou P-521 respectivement.
› Le payload d'un JWT est-il secret ?
Non. L'en-tête et le payload sont seulement encodés en Base64URL : toute personne qui détient le jeton peut les lire. La signature empêche les modifications, pas la lecture. Ne mettez jamais de mots de passe ni d'autres secrets dans le payload d'un JWT.
› Mon secret ou ma clé privée sont-ils enregistrés ou envoyés ?
Non. La signature s'exécute dans votre navigateur via la Web Crypto API. Le secret ou la clé reste uniquement en mémoire sur cette page : ni enregistré, ni écrit dans la barre d'adresse, ni inclus dans les liens de partage. Évitez tout de même de coller des clés de production dans une page web que vous ne maîtrisez pas.