Skip to content

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_tokensBearer-токены (name, note, expiry, revoked_at)

Конфигурация

ПеременнаяПо умолчаниюОписание
PORT8091Порт сервера
DB_HOSTАдрес PostgreSQL
DB_PORT5432Порт PostgreSQL
DB_USERПользователь PostgreSQL
DB_PASSWORDПароль PostgreSQL
DB_NAMEИмя базы данных
DB_SSL_MODEdisableРежим SSL
JWT_SECRETСекрет для JWT
JWT_ALGORITHMHS256Алгоритм JWT
JWT_TTL24hВремя жизни токена
SESSION_SECRETСекрет сессий
SESSION_TTL168hВремя жизни сессии (7 дней)
SESSION_COOKIE_NAMEsession_idИмя cookie
SESSION_SECUREfalseHTTPS only cookie
SESSION_HTTP_ONLYtrueДоступ только через HTTP
SESSION_SAME_SITELaxSameSite policy
OAUTH_VK_CLIENT_IDVK OAuth Client ID
OAUTH_VK_CLIENT_SECRETVK OAuth Secret
OAUTH_VK_REDIRECT_URLVK OAuth Callback URL
OAUTH_GOOGLE_CLIENT_IDGoogle OAuth Client ID
OAUTH_GOOGLE_CLIENT_SECRETGoogle OAuth Secret
OAUTH_GOOGLE_REDIRECT_URLGoogle OAuth Callback URL
OAUTH_YANDEX_CLIENT_IDYandex OAuth Client ID
OAUTH_YANDEX_CLIENT_SECRETYandex OAuth Secret
OAUTH_YANDEX_REDIRECT_URLYandex OAuth Callback URL
OAUTH_GITHUB_CLIENT_IDGitHub OAuth Client ID
OAUTH_GITHUB_CLIENT_SECRETGitHub OAuth Secret
OAUTH_GITHUB_REDIRECT_URLGitHub OAuth Callback URL
OAUTH_GITLAB_CLIENT_IDGitLab OAuth Client ID
OAUTH_GITLAB_CLIENT_SECRETGitLab OAuth Secret
OAUTH_GITLAB_REDIRECT_URLGitLab OAuth Callback URL
MESSAGING_TYPEnatsТип брокера сообщений
MESSAGING_URLnats://localhost:4222URL NATS
LOG_LEVELinfoУровень логирования
LOG_FORMATjsonФормат логов
LOG_OUTPUTstdoutКуда писать логи