Auth Service
Ответственность
Сервис аутентификации сотрудников. Управляет JWT-токенами и сессиями.
Ключевые функции
- JWT access + refresh tokens для авторизации сотрудников
- Логин по email + пароль для сотрудников админки
- PIN-логин на POS —
POST /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 endpointGET /internal/users/{id}/scope. Scope = «вся франшиза» / список ЮЛ / список ТТ. Поля JWTrole(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).
Конфигурация
| Variable | Description | Default |
|---|---|---|
DATABASE_URL | PostgreSQL connection string | — |
REDIS_URL | Redis connection string | — |
JWT_SECRET | Секрет для подписи JWT | — |
JWT_ACCESS_TTL | Время жизни access token | 15m |
JWT_REFRESH_TTL | Время жизни refresh token | 30d |
USER_SERVICE_URL | URL User Service | http://user-service:3002 |
SMTP_HOST | SMTP-сервер (prod: smtp.mail.selcloud.ru) | localhost |
SMTP_PORT | Порт SMTP (prod: 1127 SSL, dev: 1025 mailhog) | 1025 |
SMTP_USERNAME | Логин SMTP | — |
SMTP_PASSWORD | Пароль SMTP | — |
MAIL_FROM | Email отправителя (prod: noreply@nirbi.ru) | noreply@erp.local |
Потребители /internal/auth/validate
(Обновлено в BR 2.6)
| Сервис | Тип | Примечание |
|---|---|---|
| Admin BFF | BFF (Node.js) | Проверяет JWT входящих запросов от браузера |
| POS BFF | BFF (Node.js) | Проверяет JWT POS-терминала |
| Photo Studio Service | Микросервис (Go) | Token introspection вместо JWKS — см. ADR-021 |
Ссылки
- API Endpoints
- События
- Модель данных
- Roles — детальное описание ролевой модели