Appearance
Keeper
⚙️ Как работает:
- Аутентификация по логину и паролю
Пользователь проходит логин в одном из приложений, данные проверяются через Keycloak (
grant_type=password)При успешном входе система:
Получает
access_tokenРасшифровывает
sub— ID пользователяГенерирует собственный краткоживущий ключ
X-Auth-Key(аналог Яндекс.Ключа)
Выдача
X-Auth-KeyСервис создает уникальный ключ (например, UUID или JWT) и сохраняет его в Redis или базе с TTL (например, 1 час)
Ключ возвращается клиенту, хранится на устройстве
Авторизация через
X-Auth-KeyПри каждом запросе в любую часть экосистемы клиент передаёт
X-Auth-Keyв заголовкеAPI шлюз или backend-сервис валидирует его через собственный токен-сервис
При успешной проверке — доступ разрешён
Истечение срока действия ключа
- Если ключ просрочен или невалиден, пользователь перенаправляется на логин по логину и паролю
Панель администратора
Через админ-интерфейс можно:
Сбросить пароль пользователя
Управлять ролями
Выпустить токен для сервисов (
client_credentials)Просматривать и отзывать
X-Auth-Key(если хранится в БД)
🔐 Безопасность
Все
X-Auth-Keyгенерируются с ограниченным TTL и проверкой подписи/сохранениемТокены пользователя (
access_token,refresh_token) хранятся безопасно и никогда не передаются напрямую клиентамПоддерживается аудит действий, связанных с входом и управлением токенами
🧩 Интеграция в экосистему:
Фронтенды получают
X-Auth-Keyпри логине и используют его в запросахBackend-сервисы валидируют
X-Auth-Keyчерез внутренний токен-сервисМобильные приложения работают через REST API с поддержкой автоматического продления ключа
📦 Стек:
Keycloak (identity store)
Redis (для хранения
X-Auth-Key)FastAPI (обёртка над логикой авторизации и API шлюз)
🧩 Что делает Keycloak:
| Что | Делает Keycloak? |
|---|---|
| Авторизация по логину/паролю | ✅ Да |
| Выдаёт JWT токены | ✅ Да |
| Управляет пользователями и ролями | ✅ Да |
| Хранит токены в своей сессии | ⚠️ Да, но не Redis |
Генерирует кастомный внешний ключ (X-Auth-Key) | ❌ Нет |
Хранит X-Auth-Key с TTL и валидацией через ваш API | ❌ Нет |
✅ Зачем нужен X-Auth-Key, если есть токен?
Контроль и отзыв ключа со стороны бизнес-логики
— Redis TTL, ручная деактивация, аудит.Маскировка
access_tokenот клиента
— клиенту не выдаётся полноценный JWT токен, только ограниченныйX-Auth-Key.Унифицированный формат ключа для всей экосистемы
— не важно, с какого сервиса вход: везде один формат, одна валидация.Легко сделать key rotation и блокировку без влияния на Keycloak
— без вмешательства в его токены и сессии.
🛠 Как это реализуется:
Keycloak остаётся как identity provider — источник правды по пользователю.
Ваш сервис (например,
token-service) принимаетaccess_token, валидирует его и создаётX-Auth-Key, сохраняет его в Redis с TTL.Все остальные сервисы доверяют только
X-Auth-Key, валидируя его черезtoken-service.