BR 2.6 — Auth Service
Репозиторий
nearbyErp/erp-auth-service
Auth Service не модифицируется по контракту
Endpoint
POST /internal/auth/validateуже реализован и возвращаетpermissions[]. Задачи в этом файле — операционные: выпуск токена и проверка корректности.
Задачи
1. Выпустить service-token для Photo Studio Service (с ротацией)
- Сгенерировать
AUTH_SERVICE_TOKENдля сервисаgensvc(строка, ≥32 байта энтропии, base64url) - Зафиксировать токен в
.envPhoto Studio Service (переменнаяAUTH_SERVICE_TOKEN) - Убедиться что Auth Service принимает этот токен в заголовке
X-Service-Tokenи не возвращает401 UNAUTHORIZED - Реализовать поддержку ротации: Auth Service должен принимать одновременно «текущий» и «предыдущий» токен (
AUTH_SERVICE_TOKENS=token_new,token_old). Grace-period 7-30 дней. После переключения Photo Studio на новый токен — старый удаляется. - Документировать процедуру ротации (раннер раз в 90 дней или по инциденту)
Принято: ротируемый secret
Service-token — строка с ротацией (не фиксированная). Решено 2026-05-07. Grace-period в Auth Service позволяет выкатить новый токен без даунтайма потребителей.
2. Проверить ответ /internal/auth/validate для пользователя с gensvc.* permissions
- После выполнения задач User Service (добавление ключей в каталог) — выполнить тестовый вызов
POST /internal/auth/validateс токеном пользователя, у которого назначеныgensvc.*permissions - Убедиться что в ответе поле
permissionsсодержит нужные ключи:{ "valid": true, "permissions": ["gensvc.access", "gensvc.photo.create", "gensvc.history.read"] } - Убедиться что Redis-кэш
user_permissions:{user_id}инвалидируется корректно после изменения ролей (через TTL 60 сек или ручную инвалидацию)
3. Добавить gensvc.* в перечень валидных permission-ключей Auth Service (если есть валидация)
- Проверить — есть ли в коде Auth Service валидация списка допустимых permission-ключей (whitelist)
- Если есть — добавить все 6 ключей:
gensvc.access,gensvc.photo.create,gensvc.history.read,gensvc.history.read.all,gensvc.delete,gensvc.preset.admin - Если нет валидации — этот пункт не нужен (ключи проходят как строки)