Замокать эндпоинт JWKS для проверки JWT

GET-мок на /.well-known/jwks.json с одним RSA-ключом в формате JWK Set.

JWKS-эндпоинт публикует открытые ключи, которыми клиент проверяет подписи JWT. Шаблон отдаёт JWK Set с одним RSA-ключом по адресу /.well-known/jwks.json, так что можно проверить, как ваш клиент забирает, разбирает и кэширует набор ключей — в том числе как он ведёт себя, когда нужный ключ отсутствует или сменился.

Заменяет собой эндпоинт стороннего API.

Тело ответа

{
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "alg": "RS256",
      "kid": "quickmock-demo-2024",
      "n": "n6cS6BgeHi-qEzBkR5cS-MPBwt1dG9y-tGiSTw8Uov3jMu9Yiz6Oua5dg6xKnEhP20owo6iHI_MMSjU6Sb6iKSyIskDb5myN9DHC6exkDsoKPn5tPOIbzXeV0SaF-b3BejNwakl5nfHVHFMkbLCvx9KP985_5k3b7hD1UTdBOFYLIgHWTIlUkV1L9o5DoiGMm2GYWxww3tL_ZFllp4i4yyPP6c4D_J7kgFukBBZZBGe3Ou1QvzcNUYoaRNRK1PRBsC24xSfN1oZYBd4xpg6Kp3xmpsGR2nzWCviSWbvHatFusy_NqCq2Io1EAeup_i0eIN86t2-G7rn4Uoul27BQcQ",
      "e": "AQAB"
    }
  ]
}

Поля, на которые стоит обратить внимание

Поле Что означает
keys Массив JWK Set; добавьте ещё записи, чтобы проверить логику ротации ключей.
keys.0.kid ID ключа, на который ссылается заголовок JWT при выборе ключа.
keys.0.alg Алгоритм подписи, который заявляет этот ключ.
keys.0.n Модуль RSA в base64url — только для иллюстрации, рабочим ключом не является.

Создать мок

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "response_status": 200,
  "content_type": "application/json",
  "path_suffix": ".well-known/jwks.json",
  "response_body": "{\"keys\":[{\"kty\":\"RSA\",\"use\":\"sig\",\"alg\":\"RS256\",\"kid\":\"quickmock-demo-2024\",\"n\":\"n6cS6BgeHi-qEzBkR5cS-MPBwt1dG9y-tGiSTw8Uov3jMu9Yiz6Oua5dg6xKnEhP20owo6iHI_MMSjU6Sb6iKSyIskDb5myN9DHC6exkDsoKPn5tPOIbzXeV0SaF-b3BejNwakl5nfHVHFMkbLCvx9KP985_5k3b7hD1UTdBOFYLIgHWTIlUkV1L9o5DoiGMm2GYWxww3tL_ZFllp4i4yyPP6c4D_J7kgFukBBZZBGe3Ou1QvzcNUYoaRNRK1PRBsC24xSfN1oZYBd4xpg6Kp3xmpsGR2nzWCviSWbvHatFusy_NqCq2Io1EAeup_i0eIN86t2-G7rn4Uoul27BQcQ\",\"e\":\"AQAB\"}]}"
}'

Вызвать

curl https://quickmock.dev/m/<slug>/.well-known/jwks.json

Что вы получите

GET /m/<slug>/.well-known/jwks.json -> 200 one RSA JWK
the key is illustrative only, it does not verify any real signature

Чем это отличается от настоящего

RSA-ключ в этом документе — только иллюстративный: у Quickmock нет приватного ключа, который ему соответствует, поэтому он не проверит настоящую подпись. Используйте мок, чтобы проверить, что клиент правильно разбирает JWKS-документ, а не для валидации реальных токенов.

Источники

Частые вопросы

Можно ли этим ключом проверять настоящие токены?
Нет. RSA-ключ иллюстративный, парного приватного ключа не существует, поэтому подпись, которую он подтвердит, никто не создаст. Используйте шаблон для проверки разбора и кэширования JWKS, а не самой подписи.
Как протестировать ротацию ключей?
Добавьте в массив keys вторую запись с другим kid, а потом отредактируйте мок и уберите первую. Клиент, который кэширует набор ключей навсегда, после удаления начнёт стабильно падать — именно этот баг такой тест и должен обнажить.
Что будет, если в токене указан неизвестный kid?
Правильный клиент один раз перезапрашивает набор ключей, а затем отклоняет токен, если ключа всё ещё нет. Отдать набор без ожидаемого kid — самый чистый способ убедиться, что клиент не зациклится и не упадёт.

Готовы попробовать?

Открыть в конструкторе моков и сначала поправить

Хорошо сочетается с гайдом: Замокать REST API эндпоинт

Похожие шаблоны

← Все шаблоны

Обновлено: 2026-10-17