Aller au contenu principal
Sécurité & confidentialité

Inspecteur JWK / JWKS

Collez une JWK ou un JWKS pour obtenir un tableau par clé (kid, kty, alg, use, key_ops, empreinte SHA-256 RFC 7638) et des avertissements : kty ou kid manquant, kid en double, matériel de clé privée publié par erreur.

  • Presse-papiers

Intégrer ce widget

Personnalisez le rendu, vérifiez l’aperçu puis copiez le code.

Aperçu

Type de code d’intégration

Code à copier

Responsive et redimensionné automatiquement par Bethemesh.

Cet outil vous a-t-il été utile ?

Comment fonctionne cet outil ?

L’inspecteur JWK / JWKS rend lisible un jeu de clés JSON Web Key, tel que celui publié à l’adresse jwks_uri d’un fournisseur OpenID Connect. Il s’adresse aux développeurs et équipes sécurité qui publient ou consomment un JWKS et veulent vérifier en un coup d’œil quelles clés il contient, comment elles sont identifiées et si aucune donnée privée n’y figure par erreur.

Une JWK (RFC 7517) décrit une clé en JSON : kty donne la famille (RSA, EC, oct), kid l’identifiant, alg l’algorithme prévu, use l’usage (sig pour signature, enc pour chiffrement) et key_ops les opérations autorisées. Un JWKS est simplement un objet {"keys":[…]} qui en regroupe plusieurs. L’outil accepte les deux formes, affiche une ligne par clé et résume le nombre de clés, les types présents et les kid distincts. Il calcule aussi l’empreinte RFC 7638 de chaque clé : le hash SHA-256, encodé en Base64URL, d’un JSON canonique ne contenant que les membres obligatoires classés par ordre alphabétique, soit e, kty et n pour RSA, crv, kty, x et y pour EC, k et kty pour une clé symétrique.

Les avertissements ciblent les erreurs réelles de publication : kty absent (la clé est inexploitable), kid absent alors que le jeu compte plusieurs clés (le vérificateur ne peut pas savoir laquelle utiliser), kid en double, et surtout présence de matériel privé. Pour RSA, les membres d, p, q, dp, dq et qi constituent la clé privée ; pour EC, c’est d ; pour une clé symétrique oct, le membre k est lui-même le secret. Un JWKS public ne doit contenir que des clés publiques, faute de quoi n’importe qui peut signer des jetons à votre place. Le résultat peut être exporté en JSON.

Comment utiliser cet outil ?

  1. Collez la JWK ou le JWKS

    Collez une clé seule {"kty":…} ou un jeu complet {"keys":[…]}, par exemple copié depuis l’URL jwks_uri de votre fournisseur.

  2. Lisez le tableau des clés

    Pour chaque clé, consultez kid, kty, alg, use, key_ops et l’empreinte SHA-256 RFC 7638, ainsi que le résumé du nombre de clés, des types et des kid distincts.

  3. Traitez les avertissements

    Corrigez les kty ou kid manquants, les kid en double et retirez toute donnée privée, puis exportez le résultat en JSON si besoin.

Cas d'utilisation

Contrôler un JWKS avant de le publier

Avant de mettre en ligne /.well-known/jwks.json, vérifiez qu’aucune clé ne contient d ou k et que chaque clé porte un kid unique.

Suivre une rotation de clés

Collez le JWKS de votre fournisseur (Auth0, Keycloak, Entra ID, Google) pendant une rotation pour voir l’ancienne et la nouvelle clé côte à côte, avec leur kid et leur empreinte.

Retrouver la clé qui a signé un jeton

Comparez le kid lu dans l’en-tête d’un JWT avec ceux du JWKS pour identifier la clé attendue, puis vérifiez la signature avec le vérificateur JWT.

Conseils et bonnes pratiques

  • Un avertissement de clé privée sur un JWKS déjà publié impose de révoquer et remplacer la clé : la retirer du fichier ne suffit pas, elle a pu être copiée.
  • N’utilisez pas un kid dérivé d’un compteur ou d’une date prévisible si vous pouvez utiliser l’empreinte RFC 7638 : elle est stable et identique quel que soit le formatage du JSON.
  • Une clé oct (symétrique) n’a jamais sa place dans un JWKS public : les secrets HMAC se partagent hors bande, via un gestionnaire de secrets.

Questions fréquentes

Quelle est la différence entre une JWK et un JWKS ?

Une JWK est une seule clé représentée en JSON, avec des champs comme kty, n, e ou x et y. Un JWKS (JSON Web Key Set) est un objet {"keys":[…]} qui contient une liste de JWK, généralement publié par un serveur d’autorisation pour que les clients vérifient ses jetons.

Qu’est-ce qu’une empreinte JWK (thumbprint) ?

C’est un identifiant calculé selon la RFC 7638 : le SHA-256 d’un JSON canonique ne contenant que les membres obligatoires de la clé publique, encodé en Base64URL. Deux représentations d’une même clé donnent toujours la même empreinte, et l’empreinte d’une clé privée est celle de sa clé publique. Beaucoup de fournisseurs l’utilisent comme kid.

Le kid est-il obligatoire dans un JWKS ?

La RFC 7517 le rend facultatif, mais dès qu’un JWKS contient plusieurs clés, il devient indispensable : c’est le kid de l’en-tête du JWT qui permet de choisir la bonne clé. Sans lui, le vérificateur doit essayer chaque clé, ce que beaucoup de bibliothèques refusent.

Comment savoir si une JWK contient une clé privée ?

Une JWK RSA est privée si elle contient d (et souvent p, q, dp, dq, qi) ; une JWK EC est privée si elle contient d ; une clé oct contient toujours le secret dans k. L’outil signale ces membres. Une clé publique RSA ne contient que kty, n et e, plus d’éventuelles métadonnées.

Que signifient kty RSA, EC et oct ?

RSA désigne une clé RSA utilisée par exemple avec RS256 ou PS256 ; EC une clé à courbe elliptique (P-256, P-384, P-521) utilisée avec ES256, ES384 ou ES512 ; oct une clé symétrique, c’est-à-dire une suite d’octets secrète utilisée avec HS256 ou pour du chiffrement AES.

Quelle différence entre use et key_ops ?

use indique l’usage général de la clé : sig pour la signature, enc pour le chiffrement. key_ops liste précisément les opérations autorisées, comme verify, sign, encrypt ou wrapKey. La RFC 7517 recommande de ne pas utiliser les deux ensemble ou, si c’est le cas, qu’ils restent cohérents.

Outils associés

Des outils similaires ou complémentaires à celui-ci.

Fonctionne bien avec

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.

Sécurité & confidentialitéUtiliser l’outil

Décodez un JWT pour lire son en-tête, son payload, ses claims et ses dates d’expiration.

Sécurité & confidentialitéMis en avantUtiliser l’outil

Générez un code_verifier PKCE, son code_challenge S256 et un state pour votre requête d’autorisation OAuth.

Sécurité & confidentialitéNouveauUtiliser l’outil