Перейти к содержимому
ecdsa.com
jwks-rsa (Node.js)JWKS и обнаружение ключей

Сообщение об ошибке

The JWKS endpoint did not contain any signing keys

Также выводится как

  • The JWKS endpoint did not contain any keys

jwks-rsa (Node.js) — JwksError from getSigningKey()

Что это означает

Эндпоинт JWKS вернул ключи, но после фильтрации ни одним из них нельзя проверить подпись. jwks-rsa оставляет только ключи, у которых `use` равен `"sig"` или отсутствует, `kty` — RSA, EC или OKP и которые успешно импортируются как открытые ключи. Всё остальное (ключи шифрования, симметричные ключи, некорректные или закрытые JWK) отбрасывается. Родственное сообщение «did not contain any keys» означает, что пуст или отсутствует сам массив `keys`.

Почему это происходит

Как исправить

  1. 1.

    Посмотрите kty, use и alg у каждого ключа

    Одна строка jq показывает, почему отфильтрован каждый ключ. Строка с `has_private: true` означает, что набор ключей раскрывает закрытый ключ: уберите его из набора и проведите ротацию этого ключа.

    bash
    curl -s "$JWKS_URI" | jq '.keys[] | {kid, kty, use, alg, crv, has_private: has("d")}'
  2. 2.

    Опубликуйте хотя бы один ключ подписи

    Если эндпоинт ваш, включите в него каждый действующий ключ подписи с `use: "sig"`, уникальным `kid` и его `alg`. Ключи шифрования могут находиться в том же наборе, если они помечены `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" }
      ]
    }

Связанные ошибки

Открыть всю базу ошибок подписей