P0: Сделать refresh-токены устойчивыми в кластере #23
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
Таблицы
session,admin_sessionиverificationхранятся какram_copiesтолько на локальной ноде. Refresh и авторизация ломаются при балансировке нагрузки или после рестарта ноды.Влияние
Нестабильные сессии админки и пользовательского API в multi-node режиме; случайные 401 при refresh.
Ожидаемый результат
Refresh работает независимо от того, какая нода обслуживает запрос.
Критерии приёмки
Файлы
src/infra/infra_mnesia.erlsrc/handlers/admin/admin_handler_refresh.erlsrc/handlers/handler_refresh.erlПриоритет
P0
Беру в работу. Следующий шаг — варианты решения для согласования.
Утверждён вариант 3c: единая session-модель (refresh JWT + rotation + reuse detection). Фаза 1 в #23: ядро + admin API. Целевая база для client web и mobile.
Фаза 1 реализована: таблица auth_session (disc_copies), core_auth_session, logic_auth_session, refresh JWT с rotation/reuse detection, admin login/refresh переведены. Unit-тесты проходят. API-тесты и обновление спека — следующий шаг.
Спека обновлена (EventHubBackSpec §6.1). Unit-тесты: 22+ (core_auth_session, logic_auth_session, auth, admin_handler_login). API CT на Windows не запускается (argon2 NIF) — прогон в Docker/CI после донастройки. CI/CD workflows временно отключены (только workflow_dispatch).
Фаза 1 завершена. Тесты в WSL: admin API CT 15/15 (включая refresh), auth unit 26/26. User API 17/21 — 4 падения не связаны с auth (calendar_view, events, occurrence_cancel, search). Готово к закрытию фазы 1.