RFC 6749 — Versola Docs
/docs
До 1.00.7.5versola.ioGitHub

RFC 6749

OAuth 2.0 Authorization Framework — grant type, аутентификация клиентов и endpoint'ы, которые реализует Versola.

Спецификация: RFC 6749

OAuth 2.0 — отраслевой стандартный протокол авторизации. С его помощью приложение получает ограниченный доступ к ресурсу от имени пользователя или от своего имени.

Статус

Реализован частично. Отмечено пунктов: 26 из 28.

Grant type

  • Authorization Code Grant (PKCE обязателен, кроме confidential-клиентов тенанта standard)
  • Client Credentials Grant
  • Refresh Token Grant
  • Device Authorization Grant (RFC 8628) — не реализован

Удалены намеренно, по OAuth 2.1:

  • Implicit Grant
  • Resource Owner Password Credentials Grant

PKCE

  • code_challenge обязателен в каждом authorization request, кроме confidential-клиентов тенанта standard
  • code_verifier обязателен при обмене, если code выдан с challenge, и отклоняется, если не выдан
  • Метод challenge S256; code_challenge_method обязателен, когда передан challenge
  • Метод challenge plain — не принимается

Refresh token

  • Ротация refresh token — при каждом использовании выдается новый; grant с привязкой к отправителю продлевается на месте
  • Старый refresh token сразу выводится из обращения при использовании
  • Все семейство токенов отзывается, когда повторно предъявлен уже выведенный из обращения refresh token (RefreshTokenFlowSpec)
  • С Idempotency-Key в refresh-запросе клиент может безопасно повторить запрос после потерянного ответа

Authorization code

  • Code одноразовые; повторное предъявление использованного code отзывает выданные по нему токены
  • Code можно обменять только тому клиенту, которому он выдан, и с тем же redirect_uri

Использование bearer token

  • Access token принимаются только в заголовке Authorization
  • Токены в параметрах URL или в теле запроса отклоняются
  • Короткоживущие access token с TTL для каждого клиента
  • Cache-Control: no-store и Pragma: no-cache в ответах token endpoint

Аутентификация клиента

  • client_secret_basic — заголовок Authorization: Basic
  • client_secret_post — учетные данные клиента в теле запроса
  • private_key_jwt — см. RFC 7523
  • tls_client_auth и self_signed_tls_client_auth — см. RFC 8705
  • client_secret_jwt — не реализован

Endpoint’ы

  • GET и POST /authorize — Authorization endpoint
  • POST /token — Token endpoint
  • POST /par — Pushed Authorization Requests (RFC 9126)
  • POST /revoke — отзыв токенов (RFC 7009)
  • POST /introspect — интроспекция токенов (RFC 7662)
  • GET /.well-known/oauth-authorization-server — метаданные сервера (RFC 8414)

Примечания

  • Какой клиент каким методом может аутентифицироваться, зависит от профиля безопасности тенанта. Тенант fapi2 допускает только private_key_jwt и два метода mutual TLS.
  • Публичный клиент на тенанте standard аутентифицируется одним client_id на /token и /revoke, но никогда на /introspect.

Куда смотреть

Справочник OpenAPI перечисляет файлы OpenAPI для /authorize, /token, /par, /introspect и /revoke.