Замокать эндпоинт 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