Aller au contenu

Vérificateur JWKS

JWKS Verifier

Interroge un point de terminaison JWKS, choisit la clé par son kid et vérifie la signature d’un jeton ainsi que ses revendications standard.

Vérifie un jeton contre le JWKS publié par un émetteur — récupérez-le par son URL ou collez-le — en choisissant la clé par son `kid`, en contrôlant la signature, puis en contrôlant `exp`, `nbf` et, si vous les nommez, `iss` et `aud`. Le jeton n'est jamais envoyé ; seule l'URL du JWKS est appelée.

🔒 Fonctionne entièrement dans votre navigateurjwtjwksauthverify

Le jeton ne quitte pas cet onglet.

La vérification de la signature est faite par le WebCrypto du navigateur, et cette page n’a pas de côté serveur. La seule requête réseau est un GET vers l’URL de JWKS que vous tapez, et cette requête ne transporte rien d’autre que l’URL — pas le jeton.

Jeton

Un préfixe Bearer est retiré pour vous.

Clés publiques (JWKS)

Source des clés

Le navigateur fait un GET direct. Le jeton n’est pas envoyé.

Le `jwks_uri` du /.well-known/openid-configuration de l’émetteur est cette adresse.

Valeurs attendues (facultatif)

Tolérance de décalage d’horloge

Laissez-en une vide et ce claim n’est pas vérifié. exp et nbf sont toujours vérifiés.

Ce qui est vérifié

  • · RS256/384/512, PS256/384/512, ES256/384/512 et EdDSA (Ed25519) sont vérifiés avec WebCrypto (RFC 7518 §3, RFC 8037). HS* utilise un secret partagé et ne peut pas du tout être vérifié contre un JWKS : c’est le décodeur de JWT qui s’en charge avec le secret. ES256K et Ed448 ne sont dans le WebCrypto d’aucun navigateur.
  • · La clé est choisie par le kid de l’en-tête du jeton (RFC 7515 §4.1.4). Pendant une rotation, un JWKS porte plusieurs clés, donc un kid qui ne correspond pas est signalé comme tel.
  • · exp et nbf sont vérifiés avec la tolérance de décalage ; iss et aud seulement si vous donnez une valeur attendue (RFC 7519 §4.1). alg: none est toujours refusé.

Comment s’en servir

  1. Collez le jeton

    Son `alg`, son `kid` et son émetteur sont lus immédiatement, ce qui vous dit de quel JWKS vous avez besoin.

  2. Récupérez ou collez le jeu de clés

    Le `/.well-known/openid-configuration` de l'émetteur nomme son `jwks_uri`. Google, Microsoft et Apple ont des boutons raccourcis ; le reste, vous le tapez ou le collez.

  3. Remplissez ce que vous attendez

    Un `iss` et un `aud` laissés vides ne sont pas vérifiés du tout — c'est ainsi qu'un jeton destiné à une autre audience se fait accepter dans de vrais systèmes. La tolérance de décalage d'horloge couvre les serveurs qui divergent d'une minute.

  4. Lisez le verdict et la table des revendications

    La bannière dit accepter ou ne pas accepter ; la table en dessous dit quelle vérification a produit cette réponse et quelle clé a été retenue.

Questions fréquentes

La récupération a échoué avec une erreur CORS.

Un point de terminaison JWKS doit envoyer des en-têtes CORS pour qu'un navigateur puisse le lire. Google, Microsoft et Apple le font ; bien des émetteurs auto-hébergés, non. Récupérez-le vous-même avec curl et collez le JSON — la vérification est identique dans les deux cas.

Il dit qu'aucune clé ne correspond au kid.

En général une rotation de clés : le jeton a été signé avant que l'émetteur ne fasse tourner les siennes, et le JWKS ne contient plus que les nouvelles. Cela peut aussi vouloir dire que le jeton vient d'un autre émetteur que le JWKS que vous avez récupéré.

Pourquoi `alg: none` est-il toujours refusé ?

Parce que l'accepter est la vulnérabilité JWT classique : un attaquant réécrit l'en-tête, supprime la signature, et une bibliothèque qui fait confiance à l'en-tête laisse passer le jeton. Il n'y a aucun usage légitime de cela dans un chemin de vérification.

Peut-il vérifier un jeton HS256 ?

Pas ici — HS* repose sur un secret partagé, et un JWKS publie des clés publiques. Utilisez le décodeur JWT, qui accepte un secret. Un émetteur qui publierait des clés HMAC dans un JWKS publierait la capacité de fabriquer des jetons.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.