Перейти к основному содержимому

Архитектура

VoxKey построен вокруг трёх ключевых концепций: Realm'ы для мультитенантности, OAuth2/OIDC для аутентификации и RBAC для авторизации.

Общая схема

Realm'ы (мультитенантность)

Realm -- это изолированный домен аутентификации. Каждый realm имеет:

  • Пользователей и сессии
  • OAuth2-приложения (клиенты)
  • Провайдеры аутентификации (соцсети, пароль, passkeys)
  • RSA-ключи для подписи JWT
  • RBAC-роли и скоупы API-ресурсов
  • Брендинг и конфигурацию

Все OAuth2-эндпоинты привязаны к realm: /oauth2/{realmUUID}/...

Подробнее в разделе Realm'ы.

Уровень OAuth2/OIDC

VoxKey реализует следующие стандарты OAuth2/OIDC:

СтандартОписание
OAuth 2.0 Authorization CodeОсновной grant type для аутентификации пользователей
PKCE (RFC 7636)Обязателен для публичных клиентов (SPA)
Client CredentialsM2M-аутентификация
Refresh TokenДолгоживущие сессии
Token Introspection (RFC 7662)Серверная валидация токенов
Token Revocation (RFC 7009)Отзыв токенов
OIDC DiscoveryАвтоматическое обнаружение эндпоинтов
JWKSРаспространение публичных ключей

Модель RBAC

Авторизация управляется через три сущности:

  1. API Resources -- представляют ваши защищённые API (идентифицируются по URI аудитории)
  2. Scopes -- разрешения, принадлежащие API Resource (например read:posts)
  3. Roles -- группируют скоупы, назначаются пользователям или M2M-приложениям

При выдаче токена VoxKey определяет роли пользователя, собирает предоставленные скоупы и пересекает их с запрошенными.

Подробнее в разделе Авторизация.

Технологический стек

КомпонентТехнология
БэкендPHP 8.4+, Laravel 11, Laravel Octane (RoadRunner)
База данныхMariaDB 10.11
ФронтендReact 18, Ant Design, Vite
OAuth2league/oauth2-server
WebAuthnweb-auth/webauthn-lib
АдминкаFilament 4