Appearance
Auth Service
Назначение
Сервис централизованной аутентификации и авторизации платформы Unishift. Обеспечивает регистрацию и вход пользователей, OAuth 2.0 (VK, Google, Yandex, GitHub, GitLab), управление сессиями и токенами доступа, профиль пользователя, администрирование.
Порты
- HTTP: 8091
- БД:
auth_db(PostgreSQL)
Ключевые возможности
- Двойные режимы аутентификации: Cookie (для браузеров/SPA) и Bearer JWT (для API/межсервисного взаимодействия)
- OAuth 2.0 с 5 провайдерами: VK, Google, Yandex, GitHub, GitLab
- CSRF-защита через state-параметры в OAuth
- RBAC: роли
user/admin, статусыactive/inactive/banned - Наборы прав (permission sets): секции UI с уровнями
none/view/edit; у пользователя не больше одного набора - Секции Concierge (
concierge_chats,concierge_settings); allow-list агентовconcierge_agent_ids(пусто = все) - Управление сессиями: создание, валидация, продление, завершение (одной/всех)
- Personal Access Tokens (PAT) с настраиваемым TTL
- Публикация событий
user.createdв NATS для реакции других микросервисов - Swagger UI:
/swagger/index.html - Health check:
GET /health
Схема БД
| Таблица | Назначение |
|---|---|
users | Учётные записи (id, login, email, password, имена, avatar, status, role) |
sessions | Активные сессии (user_id, IP, user-agent, expiry) |
oauth_providers | Привязанные OAuth-аккаунты |
access_tokens | Bearer-токены (name, note, expiry, revoked_at) |
permissions | Именованные наборы секций UI + concierge_agent_ids |
Секции UI
Грант на секцию: none / view / edit. Админ получает edit на все ключи; обычный пользователь — edit на продуктовые секции и none на settings, monitoring и concierge.
| Группа | Ключи |
|---|---|
| Хабы | dashboard, ai_router, space, automation, settings, monitoring |
| Space | space_chat, space_notes, space_tasks, space_media, space_data_tables |
| Automation | automation_requests, automation_commands, automation_flows, automation_scheduler |
| Settings | settings_info, settings_users, settings_groups, settings_permissions, settings_spaces, settings_ai_router* , settings_env_manager, settings_notifications |
| Monitoring | monitoring_users, monitoring_chats, monitoring_tokens, monitoring_pipelines, monitoring_jobs |
| Concierge | concierge_chats, concierge_settings |
Хабы space / automation / settings / settings_ai_router вычисляются как максимум дочерних грантов. Секции concierge у пользователя по умолчанию выключены — их выдаёт permission set.
Конфигурация
| Переменная | По умолчанию | Описание |
|---|---|---|
PORT | 8091 | Порт сервера |
DB_HOST | — | Адрес PostgreSQL |
DB_PORT | 5432 | Порт PostgreSQL |
DB_USER | — | Пользователь PostgreSQL |
DB_PASSWORD | — | Пароль PostgreSQL |
DB_NAME | — | Имя базы данных |
DB_SSL_MODE | disable | Режим SSL |
JWT_SECRET | — | Секрет для JWT |
JWT_ALGORITHM | HS256 | Алгоритм JWT |
JWT_TTL | 24h | Время жизни токена |
SESSION_SECRET | — | Секрет сессий |
SESSION_TTL | 168h | Время жизни сессии (7 дней) |
SESSION_COOKIE_NAME | session_id | Имя cookie |
SESSION_SECURE | false | HTTPS only cookie |
SESSION_HTTP_ONLY | true | Доступ только через HTTP |
SESSION_SAME_SITE | Lax | SameSite policy |
OAUTH_VK_CLIENT_ID | — | VK OAuth Client ID |
OAUTH_VK_CLIENT_SECRET | — | VK OAuth Secret |
OAUTH_VK_REDIRECT_URL | — | VK OAuth Callback URL |
OAUTH_GOOGLE_CLIENT_ID | — | Google OAuth Client ID |
OAUTH_GOOGLE_CLIENT_SECRET | — | Google OAuth Secret |
OAUTH_GOOGLE_REDIRECT_URL | — | Google OAuth Callback URL |
OAUTH_YANDEX_CLIENT_ID | — | Yandex OAuth Client ID |
OAUTH_YANDEX_CLIENT_SECRET | — | Yandex OAuth Secret |
OAUTH_YANDEX_REDIRECT_URL | — | Yandex OAuth Callback URL |
OAUTH_GITHUB_CLIENT_ID | — | GitHub OAuth Client ID |
OAUTH_GITHUB_CLIENT_SECRET | — | GitHub OAuth Secret |
OAUTH_GITHUB_REDIRECT_URL | — | GitHub OAuth Callback URL |
OAUTH_GITLAB_CLIENT_ID | — | GitLab OAuth Client ID |
OAUTH_GITLAB_CLIENT_SECRET | — | GitLab OAuth Secret |
OAUTH_GITLAB_REDIRECT_URL | — | GitLab OAuth Callback URL |
MESSAGING_TYPE | nats | Тип брокера сообщений |
MESSAGING_URL | nats://localhost:4222 | URL NATS |
LOG_LEVEL | info | Уровень логирования |
LOG_FORMAT | json | Формат логов |
LOG_OUTPUT | stdout | Куда писать логи |