Document BIM session sync canon boundaries
This commit is contained in:
@@ -50,6 +50,30 @@ Production login должен быть NODE.DC-branded:
|
||||
|
||||
Текущее безопасное решение зафиксировано в `docs/AUTH_BRANDED_LOGIN_RFC.md`: сначала используем Authentik-native Brand/CSS/Flow customization. Reverse proxy HTML-rewrite, password form в Launcher и пересылка пароля через BFF запрещены.
|
||||
|
||||
## Inter-app session sync status 2026-06-23
|
||||
|
||||
Источник истины по пользовательской сессии остаётся в Launcher/Auth/Authentik chain. Приложения не должны выдавать себе права из локального browser-event или marker-а; любые live-события session sync являются только сигналом для revalidation через платформенный authority.
|
||||
|
||||
Фактический общий live-контур до BIM был logout-only:
|
||||
|
||||
- Launcher `/auth/session-sync` публиковал `nodedc:session:logout` в соседние приложения через iframe/BroadcastChannel/localStorage/frontchannel;
|
||||
- Engine helper `src/platform/auth/sessionSync.ts` знает только `nodedc:session:logout`;
|
||||
- Tasker/OPS имеет отдельный frontchannel/internal logout контур, но login/change parity не оформлен как общий protocol;
|
||||
- login live promotion открытого приложения после входа в другом surface не был закрытым platform-wide контрактом.
|
||||
|
||||
BIM Viewer 23.06.2026 добавил BIM-first login-sync slice для share-link сценария:
|
||||
|
||||
- Launcher service registry получил `loginSyncUrl` для BIM;
|
||||
- после успешного login Launcher публикует `nodedc:session:login` и делает frontchannel вызов зарегистрированных login-sync endpoints;
|
||||
- BIM `/auth/login-sync` создаёт короткоживущий server-side marker;
|
||||
- BIM `/api/auth/session` возвращает `loginSyncEventId`, но сам marker не является auth-token;
|
||||
- BIM frontend по новому marker-у запускает обычный optional-launch/handoff через Launcher, где происходит нормальная проверка сессии и доступа;
|
||||
- BIM logout приведён к существующему logout canon и должен live-понижать controls до guest/limited view без ручного refresh.
|
||||
|
||||
Граница текущей реализации: это кандидат на общий login-sync contract, а не закрытый канон для всей платформы. Перед подключением следующего сервиса нужно оформить `ndcauth.session` protocol: `login`, `logout`, `change`, payload, origin checks, TTL/nonce/correlation, service registry fields, revalidation rules, audit/observability и browser e2e matrix по HUB/OPS/ENGINE/BIM.
|
||||
|
||||
Правило для новых сервисов: не добавлять частный per-app login/logout bus. Сервис регистрирует sync endpoints в Launcher/control-plane registry, принимает event только как invalidate/promote trigger и всегда перепроверяет доступ через backend authority.
|
||||
|
||||
## Required claims
|
||||
|
||||
Минимальный normalized user object:
|
||||
|
||||
Reference in New Issue
Block a user