Inspecionar um JWKS e extrair as chaves públicas em PEM
- Painel
- Documentação
- API
Qu'est-ce qu'un JWKS ?
Un JWKS (JSON Web Key Set, RFC 7517) est un document JSON qui regroupe une liste de clés publiques sous forme structurée. Il sert à publier les clés qu'un émetteur de JWT utilise pour signer ses jetons, afin que n'importe quel consommateur puisse les récupérer et vérifier la signature des tokens qu'il reçoit. Le format se présente toujours ainsi :
{
"keys": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Chaque entrée du tableau keys est une JWK (JSON Web Key) qui
décrit une clé publique : type de clé (kty), identifiant (kid), usage
prévu (use), algorithme cible (alg) et composants cryptographiques.
Quand sert un JWKS ?
Le JWKS est l'épine dorsale des architectures OAuth2 et OpenID Connect modernes. Vous le rencontrerez dans plusieurs contextes :
- Découverte OIDC : tout fournisseur OpenID Connect expose un document de
configuration à
/.well-known/openid-configurationqui contient un champjwks_uri. À cette URL se trouve un JWKS listant les clés publiques actives. - Vérification de JWT : quand votre API reçoit un jeton signé en RS256 ou ES256,
elle lit le
kiddu header, télécharge le JWKS de l'émetteur, retrouve la clé correspondante, en dérive la clé publique au format PEM, et vérifie la signature. - Rotation de clés : un émetteur peut publier plusieurs clés simultanément, ce qui permet d'introduire une nouvelle clé pour signer les nouveaux jetons tout en gardant l'ancienne en service le temps que les jetons en circulation expirent.
- Federations : SAML, SCIM, services interconnectés, la publication d'un JWKS évite d'avoir à échanger manuellement des certificats X.509 entre partenaires.
Champs essentiels d'une JWK
Quelques champs reviennent systématiquement dans une JWK. Cet outil les extrait et les affiche pour chaque clé du JWKS analysé :
kid(key ID) : identifiant unique de la clé. C'est cette valeur que le header d'un JWT met dans son champkidpour indiquer quelle clé du JWKS doit servir à la vérification.kty(key type) : famille cryptographique. Les deux valeurs dominantes sontRSA(clés RSA classiques, utilisées avec RS256, RS384, RS512) etEC(courbes elliptiques, utilisées avec ES256, ES384, ES512).alg(algorithm) : algorithme de signature pour lequel cette clé est prévue. Champ facultatif mais souvent renseigné. Permet de filtrer rapidement les clés utilisables pour un JWT donné.use: usage de la clé.sigpour la signature (cas usuel),encpour le chiffrement (rare, utilisé avec JWE).
Pourquoi convertir une JWK en PEM ?
La majorité des bibliothèques cryptographiques classiques (OpenSSL, openssl_verify en
PHP, crypto en Node.js, la JCA en Java) acceptent les clés publiques au format
PEM (Base64 encadré par -----BEGIN PUBLIC KEY-----), pas directement
au format JWK. Convertir une JWK en PEM est donc indispensable pour :
- Vérifier manuellement la signature d'un JWT depuis un script ou un outil en ligne de commande
(
jwt,jose,step crypto). - Importer la clé dans un outil de debug comme JWT Verifier qui attend une clé PEM dans son champ "clé publique".
- Stocker une clé en cache local ou dans un fichier de configuration sous une forme universelle et lisible.
- Comparer rapidement deux clés (le format PEM facilite les diff visuels).
Limites et avertissements
Cet outil prend en charge les clés publiques RSA (kty=RSA) et EC
(kty=EC sur les courbes P-256, P-384,
P-521). Les autres types (OKP pour Ed25519, oct pour
les clés symétriques) ne sont pas convertis : ils sont signalés avec un message d'erreur par
entrée, le reste du JWKS reste lisible.
- La conversion s'effectue dans une seule direction : JWKS vers PEM. La reconstruction d'une JWK à partir d'une clé PEM existante n'est pas couverte par cette version.
- Le JWKS doit être collé tel quel sous forme de texte JSON. La récupération
automatique depuis une URL
jwks_uriou un endpoint OIDC n'est pas faite côté serveur, pour éviter les appels sortants imprévus. - Les clés privées ne sont pas censées apparaître dans un JWKS public, et cet outil n'extrait que les composants publics même si une clé privée était présente.
Comment l'utiliser
- Récupérez le JWKS de l'émetteur que vous voulez inspecter. Pour un fournisseur OIDC,
l'adresse est généralement
https://exemple.com/.well-known/jwks.jsonouhttps://exemple.com/oauth2/jwks. - Copiez l'intégralité du document JSON (l'objet contenant la clé
keys). - Collez-le dans la zone de saisie de l'outil et lancez l'analyse.
- Pour chaque clé du JWKS, l'outil affiche son
kid, sonkty, sonalg, sonuseet la clé publique convertie au format PEM. - Cliquez sur "copier" pour récupérer la PEM et l'utiliser dans un script de vérification, dans notre JWT Verifier, ou dans n'importe quel outil compatible OpenSSL.
Questions fréquentes
Où trouver le JWKS d'un fournisseur OIDC ?
La grande majorité des fournisseurs OpenID Connect publient un document de découverte sur
https://exemple.com/.well-known/openid-configuration. Ce JSON contient un champ
jwks_uri qui pointe vers le JWKS effectif. Quelques fournisseurs servent directement
le JWKS sur https://exemple.com/.well-known/jwks.json ou sur un endpoint OAuth2
dédié. Téléchargez le contenu et collez-le ici tel quel.
Pourquoi le kid est-il important ?
Le kid (key ID) est l'identifiant que le header d'un JWT met dans son propre champ
kid pour indiquer quelle clé du JWKS doit servir à la vérification. Sans cet
identifiant, le consommateur devrait tenter chaque clé du JWKS, ce qui complique le diagnostic en
cas d'erreur. La présence d'un kid par clé est donc considérée comme une bonne
pratique, et tous les IdP sérieux en publient un.
Quelle est la différence entre kty=RSA et kty=EC ?
RSA est la famille historique de signatures asymétriques, utilisée avec RS256, RS384, RS512. Les
clés sont décrites par un modulo n et un exposant e. EC (Elliptic
Curve) est plus récent et donne des signatures plus courtes pour un niveau de sécurité équivalent.
Les clés EC sont décrites par une courbe (crv = P-256, P-384 ou P-521) et deux
coordonnées x et y. Cet outil convertit les deux familles en PEM.
Comment utiliser la PEM extraite pour vérifier un JWT ?
Copiez la PEM, puis collez-la dans le champ "clé publique" de notre
JWT Verifier avec le JWT à valider. Vous pouvez aussi
l'utiliser depuis la ligne de commande avec openssl dgst, depuis Node.js avec
crypto.verify, depuis Python avec cryptography ou
PyJWT, depuis Java avec la JCA, etc. Le format PEM est universellement reconnu.
Mon JWKS contient une clé Ed25519 (OKP), pourquoi n'est-elle pas convertie ?
La conversion des clés OKP (Ed25519, Ed448, X25519, X448) demande une logique
spécifique et un encodage DER différent de celui des clés RSA et EC. Cette version de l'outil ne
prend en charge que RSA et EC. Les clés non gérées sont signalées
individuellement avec un message d'erreur, sans bloquer l'analyse des autres entrées du JWKS.
Peut-on récupérer le JWKS depuis une URL plutôt que de le coller ?
Pas dans cette version. L'outil ne réalise aucun appel HTTP sortant pour rester rapide et éviter
d'agir comme un proxy involontaire. Téléchargez le JWKS depuis votre navigateur ou avec
curl https://exemple.com/.well-known/jwks.json puis collez le contenu dans le champ
de saisie.
Exemplo de pedido
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Esquema de entrada
| Campo | Tipo | Obrigatório | Predefinição |
|---|---|---|---|
jwks |
text | ✓ | – |
Pontos de acesso
GET https://cdrn.fr/api/v1/tools- lista todas as ferramentas disponíveisGET https://cdrn.fr/api/v1/tools/jwks-inspector- obtém o esquema desta ferramentaPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- executa esta ferramenta com um payload JSON