Vérifier un jeton Auth0, Keycloak ou Entra ID
Récupérez le JWKS publié à l’adresse jwks_uri de votre fournisseur (par exemple /.well-known/jwks.json), collez-le avec le jeton et confirmez que la signature RS256 correspond bien à une clé publiée.
Validez un JSON Web Token : signature HS256/384/512 avec le secret partagé, RS, PS ou ES 256/384/512 avec une clé publique JWK, JWKS (sélection par kid) ou PEM, puis contrôle des dates avec tolérance d’horloge, de l’émetteur et de l’audience attendus.
HS256, HS384, HS512 : le secret partagé. RS, PS et ES : la clé publique en JWK, en JWKS (choisie par kid) ou en PEM « BEGIN PUBLIC KEY ».
Fixez l’algorithme pour une validation proche de la production. Le mode automatique sert surtout à l’inspection.
algtypkidisssubaudexpiatnbfLe vérificateur JWT indique si un jeton est authentique et encore acceptable : il contrôle sa signature cryptographique puis ses claims. Il s’adresse aux développeurs back-end, intégrateurs OAuth/OpenID Connect et équipes sécurité qui veulent confirmer qu’un jeton a bien été signé par la bonne clé avant de chercher un bug ailleurs. Pour simplement lire le contenu d’un jeton, le décodeur JWT suffit.
La signature d’un JWS (RFC 7515) porte sur la chaîne « en-tête.payload » encodée en Base64URL ; les algorithmes sont définis par la RFC 7518. Pour HS256, HS384 et HS512, l’outil recalcule un HMAC avec le secret partagé et le compare à la signature. Pour RS256/384/512 (RSASSA-PKCS1-v1_5), PS256/384/512 (RSASSA-PSS) et ES256/384/512 (ECDSA sur P-256, P-384 et P-521), il vérifie la signature avec la clé publique via la Web Crypto API ; en ECDSA, la signature JWS est la concaténation brute R‖S, 64 octets pour ES256, et non une structure DER. Un jeton déclarant alg: none est toujours rejeté.
La clé publique peut être fournie sous trois formes : une JWK seule (RFC 7517), un JWKS {"keys":[…]} dans lequel l’outil choisit la clé dont le kid correspond à celui de l’en-tête, ou un PEM « BEGIN PUBLIC KEY » (SubjectPublicKeyInfo). Pour une validation proche de la production, choisissez un Algorithme attendu au lieu de laisser le mode Automatique : le jeton ne peut ainsi pas imposer un autre algorithme accepté via son propre champ alg. Le mode Automatique reste utile pour l’inspection. Une fois la signature validée, l’outil contrôle exp et nbf avec une tolérance d’horloge réglable (par exemple 60 secondes pour absorber un décalage entre serveurs), puis, si vous les renseignez, l’émetteur iss et l’audience aud attendus. Le résultat indique « valide » ou « invalide » avec la raison précise : signature incorrecte, kid introuvable, jeton expiré, pas encore valide, émetteur ou audience inattendus.
Collez le jeton complet. L’algorithme déclaré dans l’en-tête détermine le type de clé attendu : secret pour HS*, clé publique pour RS*, PS* et ES*.
Saisissez le secret partagé, ou collez une clé publique JWK, un JWKS entier ou un PEM PUBLIC KEY. Avec un JWKS, la clé est choisie automatiquement grâce au kid.
Ajustez la tolérance d’horloge, ajoutez si besoin l’émetteur et l’audience attendus, puis lisez le résultat valide ou invalide avec sa raison.
Récupérez le JWKS publié à l’adresse jwks_uri de votre fournisseur (par exemple /.well-known/jwks.json), collez-le avec le jeton et confirmez que la signature RS256 correspond bien à une clé publiée.
Après une rotation, votre API rejette des jetons : vérifiez si le kid de l’en-tête existe encore dans le JWKS ou si le jeton a été signé par une clé retirée.
Un microservice refuse les jetons émis par un autre : testez le secret partagé et l’audience attendue pour savoir si le problème vient de la clé ou des claims.
Entrée
Jeton : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ; algorithme : HS256 ; secret : clé-incorrecteRésultat
Signature invalide avec ce secret incorrect. Le contenu décodé comporte sub=1234567890 et iat=1516239022, sans champ exp.Décoder consiste à lire l’en-tête et le payload encodés en Base64URL, sans aucune clé. Vérifier consiste à recalculer ou contrôler la signature avec le secret ou la clé publique de l’émetteur, puis à valider exp, nbf, iss et aud. Seule la vérification prouve que le jeton n’a pas été forgé ou modifié.
HS256 est symétrique : le même secret sert à signer et à vérifier. RS256, PS256 et ES256 sont asymétriques : l’émetteur signe avec sa clé privée et vous vérifiez avec la clé publique, généralement publiée dans un JWKS. Vous n’avez jamais besoin de la clé privée pour vérifier.
Le kid (key ID) indique quelle clé du JWKS a signé le jeton, ce qui permet à l’émetteur de publier plusieurs clés pendant une rotation. Lorsque vous collez un JWKS, l’outil sélectionne la clé dont le kid correspond. Si aucun kid ne correspond, la clé a probablement été retirée ou le JWKS ne vient pas du bon émetteur.
Les causes les plus fréquentes sont une mauvaise clé (autre environnement, clé retirée), un secret mal encodé, un jeton modifié ou tronqué, ou une clé qui ne correspond pas à l’algorithme déclaré. Côté serveur, imposez toujours l’algorithme attendu plutôt que de faire confiance au champ alg, afin d’éviter les attaques par confusion d’algorithme décrites dans la RFC 8725.
C’est une marge ajoutée lors du contrôle de exp et nbf pour compenser un léger décalage entre l’horloge de l’émetteur et celle du vérificateur. Avec 60 secondes de tolérance, un jeton expiré depuis 30 secondes est encore accepté. La plupart des bibliothèques utilisent une valeur entre 0 et 5 minutes.
Une clé publique n’est pas secrète et peut être collée sans risque. Un secret HMAC l’est : ici la vérification s’exécute dans votre navigateur avec la Web Crypto API et rien n’est transmis, mais évitez malgré tout d’utiliser un secret de production sur un poste partagé.
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.
Analysez une clé JWK ou un JWKS : kid, kty, alg, use, empreinte RFC 7638 et alerte si une clé privée est exposée.
Créez et signez un JWT HS256, HS384 ou HS512 à partir d’un en-tête, d’un payload JSON et d’un secret.
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.
Distinguez hash, chiffrement et signature, puis utilisez les empreintes pour vérifier une égalité ou l’intégrité de données sans leur attribuer de fausses garanties.