VersolaVersola/docs
versola.kzGitHub

RFC 7517 — JSON Web Key

Эндпоинт JWKS для публикации публичных ключей и верификации JWT

Спецификация: 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 — идентификатор ключа (сопоставляется с заголовком kid JWT)
  • 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 выбирает правильный ключ из набора
  • Ротация без простоя — старые токены остаются валидными во время ротации