Auth Service

Ответственность

Сервис аутентификации сотрудников. Управляет JWT-токенами и сессиями.

Ключевые функции

  • JWT access + refresh tokens для авторизации сотрудников
  • Логин по email + пароль для сотрудников админки
  • PIN-логин на POSPOST /auth/pin-login с pin + store_id, валидирует через User Service internal endpoint, проверяет pos.access в permissions (BR 1.4.4)
  • Refresh token rotation — при обновлении токена старый инвалидируется
  • Logout — инвалидация refresh token
  • Forgot / Reset password — email-based (SMTP через Selectel relay, см. ADR-003 — superseded: переход с Resend HTTP API на Spring Mail SMTP)
  • /auth/me — возвращает текущего пользователя с permissions и scope (для фронта)
  • Агрегация permissions (BR 1.4.3): JWT содержит только role_ids, полный список прав отдаётся через /auth/me (фронт) и /internal/auth/validate (сервисы) с Redis-кэшем TTL 60 сек
  • Агрегация и кэширование scope (BR 1.4.4): дополнительно к permissions Auth Service кэширует scope сотрудника (user_scope:{user_id}, TTL 60 сек) через User Service internal endpoint GET /internal/users/{id}/scope. Scope = «вся франшиза» / список ЮЛ / список ТТ. Поля JWT role (enum), store_ids, legal_entity_id удалены в BR 1.4.4 — downstream-сервисы получают scope из /internal/auth/validate

OTP-авторизация клиентов

OTP для клиентов (Customer Service) — планируется при подключении Customer BFF / мобильного приложения.

Зависимости

  • PostgreSQL (auth_db) — refresh tokens, login attempts, password reset tokens
  • Redis — кэш сессий для быстрой валидации
  • User Service — получение данных сотрудника по email (internal API)
  • SMTP relay (Selectel) — отправка email для сброса пароля через Spring Mail (см. ADR-003)

Реализация заблокирована — нужен BR по сотрудникам (таблица employees в User Service).

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

VariableDescriptionDefault
DATABASE_URLPostgreSQL connection string
REDIS_URLRedis connection string
JWT_SECRETСекрет для подписи JWT
JWT_ACCESS_TTLВремя жизни access token15m
JWT_REFRESH_TTLВремя жизни refresh token30d
USER_SERVICE_URLURL User Servicehttp://user-service:3002
SMTP_HOSTSMTP-сервер (prod: smtp.mail.selcloud.ru)localhost
SMTP_PORTПорт SMTP (prod: 1127 SSL, dev: 1025 mailhog)1025
SMTP_USERNAMEЛогин SMTP
SMTP_PASSWORDПароль SMTP
MAIL_FROMEmail отправителя (prod: noreply@nirbi.ru)noreply@erp.local

Потребители /internal/auth/validate

(Обновлено в BR 2.6)

СервисТипПримечание
Admin BFFBFF (Node.js)Проверяет JWT входящих запросов от браузера
POS BFFBFF (Node.js)Проверяет JWT POS-терминала
Photo Studio ServiceМикросервис (Go)Token introspection вместо JWKS — см. ADR-021

Ссылки