Message d’erreur
The JWKS endpoint did not contain any signing keys
Également affiché sous la forme
- The JWKS endpoint did not contain any keys
jwks-rsa (Node.js) — JwksError from getSigningKey()
Ce que cela signifie
Le point de terminaison JWKS a répondu avec des clés, mais après filtrage aucune d’elles ne peut vérifier de signatures. jwks-rsa ne garde que les clés dont le `use` vaut `"sig"` ou est absent, dont le `kty` est RSA, EC ou OKP, et qui s’importent correctement comme clés publiques. Tout le reste – clés de chiffrement, clés symétriques, JWK malformées ou privées – est écarté. Le message voisin « did not contain any keys » signifie que le tableau `keys` lui-même était vide ou absent.
Pourquoi cela se produit
Seules des clés de chiffrement sont publiées
fréquenteCertains fournisseurs exposent des points de terminaison distincts pour les clés de chiffrement (pour JWE) et pour les clés de signature. Configurer l’URL des clés de chiffrement renvoie des clés marquées `use: "enc"`, qui ne doivent jamais vérifier de signatures.
Types de clé symétriques ou inconnus
occasionnelleUn jeu de clés `kty: "oct"` (des secrets HMAC, qui ne devraient jamais être publiés) ou de types que jwks-rsa ne gère pas est entièrement écarté par le filtrage.
JWK privées ou malformées
occasionnelleLes clés qui ne s’importent pas (`n`/`e` manquant, base64url incorrect, courbe non prise en charge) sont ignorées sans avertissement, tout comme les clés qui s’importent en tant que clés privées parce qu’elles contiennent `d`. Une clé privée publiée constitue en outre un incident de compromission de clé.
L’URL renvoie un autre document JSON
occasionnelleUn document de découverte OpenID ou un objet d’erreur n’a pas de tableau `keys` ; jwks-rsa signale alors que le point de terminaison ne contenait aucune clé.
Comment corriger l’erreur
- 1.
Examiner kty, use et alg de chaque clé
Une seule ligne de jq montre pourquoi chaque clé est écartée. Une ligne `has_private: true` signifie que le jeu de clés expose une clé privée : retirez-la et effectuez la rotation de cette clé.
bash curl -s "$JWKS_URI" | jq '.keys[] | {kid, kty, use, alg, crv, has_private: has("d")}' - 2.
Publier au moins une clé de signature
Si vous gérez le point de terminaison, incluez chaque clé de signature active avec `use: "sig"`, un `kid` unique et son `alg`. Les clés de chiffrement peuvent figurer dans le même jeu tant qu’elles sont marquées `use: "enc"`.
json { "keys": [ { "kty": "RSA", "kid": "sig-2026-10", "use": "sig", "alg": "RS256", "n": "…", "e": "AQAB" }, { "kty": "RSA", "kid": "enc-2026", "use": "enc", "alg": "RSA-OAEP-256", "n": "…", "e": "AQAB" } ] }