Архитектура
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 Credentials | M2M-аутентификация |
| Refresh Token | Долгоживущие сессии |
| Token Introspection (RFC 7662) | Серверная валидация токенов |
| Token Revocation (RFC 7009) | Отзыв токенов |
| OIDC Discovery | Автоматическое обнаружение эндпоинтов |
| JWKS | Распространение публичных ключей |
Модель RBAC
Авторизация управляется через три сущности:
- API Resources -- представляют ваши защищённые API (идентифицируются по URI аудитории)
- Scopes -- разрешения, принадлежащие API Resource (например
read:posts) - Roles -- группируют скоупы, назначаются пользователям или M2M-приложениям
При выдаче токена VoxKey определяет роли пользователя, собирает предоставленные скоупы и пересекает их с запрошенными.
Подробнее в разделе Авторизация.
Технологический стек
| Компонент | Технология |
|---|---|
| Бэкенд | PHP 8.4+, Laravel 11, Laravel Octane (RoadRunner) |
| База данных | MariaDB 10.11 |
| Фронтенд | React 18, Ant Design, Vite |
| OAuth2 | league/oauth2-server |
| WebAuthn | web-auth/webauthn-lib |
| Админка | Filament 4 |