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 - Управление сессиями: создание, валидация, продление, завершение (одной/всех)
- 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) |
Конфигурация
| Переменная | По умолчанию | Описание |
|---|---|---|
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 | Куда писать логи |