Signature JWT HMAC
JWT = Base64URL(en-tête) + '.' + Base64URL(charge utile) + '.' + Base64URL(HMAC(secret, données à signer))
Générez un JSON Web Token signé en HMAC pour vos tests : saisissez l’en-tête et le payload en JSON, choisissez HS256, HS384 ou HS512 et votre secret ; alg et typ sont renseignés automatiquement.
Pour des tests et du développement : n’utilisez pas un secret de production sur un appareil partagé ou non fiable.
L’encodeur JWT fabrique un jeton signé en HMAC à partir d’un en-tête, d’un payload JSON et d’un secret partagé. Il sert aux développeurs et testeurs qui ont besoin d’un jeton sur mesure pour appeler une API locale, écrire un test automatisé ou reproduire un cas limite (jeton expiré, rôle manquant). Il est destiné au développement et aux tests, pas à l’émission de jetons de production.
L’outil vérifie que l’en-tête et le payload sont des objets JSON valides, puis fixe dans l’en-tête alg sur l’algorithme choisi et typ sur JWT. Chaque objet est sérialisé puis encodé en Base64URL (RFC 4648, sans remplissage =), et les deux segments sont joints par un point. Par exemple, l’en-tête {"alg":"HS256","typ":"JWT"} devient eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
La signature est un HMAC calculé sur la chaîne « en-tête.payload » avec SHA-256, SHA-384 ou SHA-512 selon l’algorithme (RFC 7518, section 3.2), via la Web Crypto API. Le résultat, encodé en Base64URL, forme le troisième segment du JWT (RFC 7519). La RFC 7518 impose une clé au moins aussi longue que la sortie du hash : 256 bits (32 octets) pour HS256, 384 bits pour HS384 et 512 bits pour HS512. Les dates exp, iat et nbf du payload doivent être exprimées en secondes Unix, par exemple "exp": 1767225600 pour le 1er janvier 2026 à 00:00 UTC.
Modifiez les deux zones JSON pré-remplies ou importez un fichier .json. Ajoutez vos claims : sub, iss, aud, exp, rôles ou champs personnalisés.
Sélectionnez HS256, HS384 ou HS512 et saisissez le secret partagé. Les champs alg et typ de l’en-tête sont mis à jour automatiquement.
Cliquez sur Générer : le jeton signé s’affiche et peut être copié. Une erreur s’affiche si le JSON est invalide ou si le secret est vide.
JWT = Base64URL(en-tête) + '.' + Base64URL(charge utile) + '.' + Base64URL(HMAC(secret, données à signer))
Créez un jeton signé avec le secret de votre environnement de développement pour appeler une route protégée avec curl ou Postman, sans passer par tout le flux de connexion.
Modifiez exp dans le passé ou retirez un claim roles pour vérifier que votre middleware renvoie bien une erreur 401 ou 403 dans ces cas limites.
Générez des jetons stables pour vos tests d’intégration, puis contrôlez-les avec le vérificateur JWT pour vous assurer que le secret et les claims correspondent à ceux attendus par le serveur.
Entrée
Algorithme : HS256 ; En-tête JSON : {"alg":"HS256","typ":"JWT"} ; Charge utile JSON : {"sub":"1234567890","name":"John Doe","iat":1516239022} ; Secret : clé-de-testRésultat
JWT signé : un JWT composé de trois segments Base64URL séparés par des points. La signature est calculée en HMAC-SHA256.Un JWT se construit en encodant en Base64URL un en-tête JSON et un payload JSON, puis en signant la chaîne « en-tête.payload » avec l’algorithme choisi. Ici, il suffit de saisir les deux objets, un secret et de cliquer sur Générer. En production, cette étape est réalisée par votre serveur d’authentification ou une bibliothèque comme jose ou jsonwebtoken.
La RFC 7518 exige une clé d’au moins 256 bits, soit 32 octets, pour HS256 ; 48 octets pour HS384 et 64 octets pour HS512. Un secret aléatoire de cette taille, par exemple produit par un générateur de jetons sécurisés, empêche les attaques par dictionnaire sur la signature.
Ces algorithmes HMAC n’utilisent qu’un secret partagé, ce qui suffit pour créer des jetons de test. RS256 ou ES256 nécessiteraient une clé privée, qui ne devrait pas être manipulée dans un outil web. Si plusieurs parties doivent vérifier vos jetons sans pouvoir en émettre, préférez un algorithme asymétrique côté serveur.
Ajoutez le claim exp au payload avec un horodatage Unix en secondes, par exemple "exp": 1767225600. Un convertisseur de timestamp permet de calculer cette valeur à partir d’une date. Pensez aussi à iat pour indiquer la date d’émission.
Non, l’outil est conçu pour le développement et les tests. En production, les jetons doivent être émis par un serveur qui garde le secret hors de portée des utilisateurs, applique des durées de vie courtes et gère la rotation des clés.
Non. L’encodage et la signature HMAC sont calculés dans votre navigateur avec la Web Crypto API, sans requête réseau. Évitez néanmoins de saisir un secret de production, car quiconque le connaît peut signer des jetons acceptés par votre API.
Workflow recommandé
Découvrez les outils qui interviennent naturellement avant, après ou en complément de celui-ci.
Décodez un JWT pour lire son en-tête, son payload, ses claims et ses dates d’expiration.
Vérifiez la signature d’un JWT avec un secret HMAC ou une clé publique JWK, JWKS ou PEM, puis contrôlez exp, nbf, iss et aud.
Apprenez ce qu’un JWT contient, ce que sa signature prouve réellement et pourquoi décoder un jeton ne revient pas à le vérifier.
Comprenez comment OAuth 2.0, PKCE, JWT, JWK et JWKS s’articulent sans les confondre : autorisation, jetons, clés publiques et vérification.
Apprenez à construire une CSP progressive, comprendre ses directives et éviter les politiques trop permissives ou cassantes.
Comprenez HSTS, Referrer-Policy, Permissions-Policy, protections de framing et isolation cross-origin avant de les déployer.