Спецификация: RFC 7517
JSON Web Key (JWK) определяет JSON-формат для представления криптографических ключей. Versola предоставляет JWKS-эндпоинт, чтобы ресурсные серверы могли получить публичные ключи и верифицировать подписи JWT без обращения к серверу авторизации при каждом запросе.
JWKS-эндпоинт
- Эндпоинт
GET /.well-known/jwks.json(раздел 5) - Ответ
Content-Type: application/json -
Cache-Control: public, max-age=86400— ключи кешируются публично - Несколько ключей в наборе для безотказной ротации ключей
Поля RSA-ключа (раздел 6.3)
-
kty— тип ключа (RSA) -
use— назначение ключа (sig— верификация подписи) -
alg— предназначенный алгоритм (RS256) -
kid— идентификатор ключа (сопоставляется с заголовкомkidJWT) -
n— RSA-модуль (Base64URL-кодировка) -
e— публичная экспонента RSA (Base64URL-кодировка)
Типы ключей
- RSA-ключи (
kty: "RSA") — единственный поддерживаемый тип в данный момент - EC-ключи (
kty: "EC", P-256/P-384) — не реализованы - OKP-ключи (
kty: "OKP", Ed25519) — не реализованы
Опциональные поля
-
x5c— цепочка X.509-сертификатов — не включается -
x5t— SHA-1-отпечаток X.509-сертификата — не включается -
x5u— URL X.509-сертификата — не включается
Ротация ключей
- Несколько ключей в JWKS endpoint — возвращаются все активные публичные ключи
- Сопоставление
kidзаголовка — верификация JWT выбирает правильный ключ из набора - Ротация без простоя — старые токены остаются валидными во время ротации