ДОКИ - NODEDC PLATFORM: auth design plan updates
This commit is contained in:
parent
3b13e5be52
commit
4e90dcdd7c
|
|
@ -10,3 +10,4 @@ plane-src/apps/web/.react-router/
|
|||
plane-src/apps/admin/.react-router/
|
||||
plane-src/apps/space/.react-router/
|
||||
plane-app/archive/
|
||||
plane-app/backup/
|
||||
|
|
|
|||
|
|
@ -219,6 +219,8 @@ Runtime launch закрыт через локальный Caddy-based image node
|
|||
{"text": "Настроить app access policies по группам.", "checked": True},
|
||||
{"text": "Описать bootstrap/export или blueprint strategy.", "checked": True},
|
||||
{"text": "Проверить login/logout в Authentik за proxy.", "checked": True},
|
||||
{"text": "Добавить безопасный NODE.DC branded login через Authentik Brand/CSS.", "checked": True},
|
||||
{"text": "Зафиксировать запрет HTML-proxy/password facade в security RFC.", "checked": True},
|
||||
],
|
||||
),
|
||||
text_block(
|
||||
|
|
@ -264,6 +266,18 @@ Plane live WebSocket upgrade через proxy проверен: запрос с
|
|||
|
||||
Application access задан через group bindings: Launcher доступен nodedc:superadmin, nodedc:launcher:admin, nodedc:launcher:user; Task Manager доступен nodedc:superadmin, nodedc:taskmanager:admin, nodedc:taskmanager:user. OIDC tokens получают стандартные openid/email/profile/offline_access scopes и custom groups scope.
|
||||
|
||||
2026-05-04 добавлен безопасный branded login prototype без proxy над Authentik. В platform/docs/AUTH_BRANDED_LOGIN_RFC.md зафиксирована threat model: запрещены HTML-rewrite proxy, password form в Launcher/BFF, ROPC/password grant и обход MFA/recovery/audit. Разрешенный путь — Authentik-native Brand/CSS/Flow customization.
|
||||
|
||||
platform/infra/authentik/bootstrap-dev.py теперь idempotent настраивает Brand для auth.local.nodedc: title NODE.DC, default authentication flow default-authentication-flow, flow title "Работайте во всех измерениях.", layout stacked и branding_custom_css из /templates/branding/nodedc-login.css. CSS лежит в platform/infra/authentik/custom-templates/branding/nodedc-login.css и монтируется в Authentik существующим volume /templates.
|
||||
|
||||
Runtime bootstrap выполнен: curl страницы auth.local.nodedc подтверждает title NODE.DC, matched_domain auth.local.nodedc и наличие brand-css со строкой "Работайте во всех измерениях". Authentik shell подтверждает default Brand auth.local.nodedc, branding_title NODE.DC и flow title "Работайте во всех измерениях.". Password/MFA/recovery mechanics не тронуты.
|
||||
|
||||
Дополнение 2026-05-04: экран Authentik "My applications" признан не login flow, а пользовательским dashboard самого identity provider. Для обычного платформенного UX он исключен на proxy-уровне: auth.local.nodedc/ и auth.local.nodedc/if/user* возвращают 302 на launcher.local.nodedc. OIDC discovery/authorize/callback и /if/admin/ не редиректятся, чтобы не ломать SSO и служебную админку Authentik.
|
||||
|
||||
Дополнение 2026-05-04: экран "You've logged out of NODE.DC Launcher" признан Authentik provider invalidation dashboard. OAuth2 providers переключены на штатный default-invalidation-flow с UserLogoutStage, чтобы global logout закрывал Authentik session и возвращал пользователя в NODE.DC route без показа Authentik application logout UI.
|
||||
|
||||
Дополнение 2026-05-04: authentication flow приближен к старому Plane login в рамках Authentik-native customization. Brand attributes выставлены в settings.locale=ru и settings.theme.base=dark. Flow title изменен на "Работайте во всех измерениях.". IdentificationStage теперь использует только email как идентификатор и привязан к штатному PasswordStage, поэтому email/password находятся в одном Authentik challenge без передачи пароля в Launcher. Отдельный PasswordStage binding удален из flow, MFA и UserLoginStage остаются штатными.
|
||||
|
||||
Изменения platform repo закоммичены и отправлены в origin/main: 4a10726, "АРХ - NODEDC PLATFORM: bootstrap Authentik applications". Remote main обновлен с afa53d5 до 4a10726.
|
||||
""",
|
||||
),
|
||||
|
|
@ -371,22 +385,29 @@ Production flow: пользователь открывает nodedc.ru, види
|
|||
"launcher",
|
||||
"Этап 3.5. NODE.DC login facade",
|
||||
"""
|
||||
Статус: backlog.
|
||||
Статус: частично реализовано.
|
||||
|
||||
Ручная проверка 2026-05-04 подтвердила: при входе пользователь пока видит стандартное окно Authentik. Это допустимо только для текущего dev/OIDC bootstrap, но не соответствует целевой UX-модели NODE.DC.
|
||||
Ручная проверка 2026-05-04 подтвердила: при входе пользователь видел стандартное окно Authentik. Это допустимо только для dev/OIDC bootstrap, но не соответствует целевой UX-модели NODE.DC.
|
||||
|
||||
Нужно сделать production login без публичного Authentik UI: либо полностью кастомизированный Authentik flow, если он реально выдержит дизайн-канон NODE.DC, либо Launcher/BFF login facade, который server-side работает с внутренним Authentik flow/API и не раскрывает IdP пользователю.
|
||||
Выбран безопасный первый путь: полностью кастомизированный Authentik-native Brand/CSS/Flow, а не proxy и не password facade в Launcher. Это сохраняет Authentik как password/session/MFA/recovery/audit authority.
|
||||
|
||||
Безопасностная граница: не делать frontend-only password form, не хранить IdP/service secrets в browser bundle, не ломать MFA/recovery/rate-limit/audit и не обходить Authentik как password/session authority.
|
||||
Безопасностная граница: не делать frontend-only password form, не хранить IdP/service secrets в browser bundle, не ломать MFA/recovery/rate-limit/audit и не обходить Authentik как password/session authority. Если Brand/CSS не даст pixel-level дизайн Plane login, следующий допустимый уровень — template override внутри Authentik deployment с отдельным security review, но не HTML-rewrite proxy.
|
||||
""",
|
||||
),
|
||||
checker(
|
||||
"launcher35",
|
||||
"Чекер этапа 3.5. NODE.DC login facade",
|
||||
[
|
||||
"Выбрать безопасную стратегию: branded Authentik flow или Launcher/BFF facade.",
|
||||
"Сверстать NODE.DC login по канону Task Manager/Launcher.",
|
||||
"Скрыть Authentik brand во всех штатных login/logout/error текстах.",
|
||||
{"text": "Выбрать безопасную стратегию: branded Authentik flow или Launcher/BFF facade.", "checked": True},
|
||||
{"text": "Запретить reverse proxy HTML rewrite и password form в Launcher/BFF.", "checked": True},
|
||||
{"text": "Добавить AUTH_BRANDED_LOGIN_RFC.md с threat model.", "checked": True},
|
||||
{"text": "Настроить Authentik Brand/CSS для auth.local.nodedc.", "checked": True},
|
||||
{"text": "Сверстать NODE.DC login по канону Task Manager/Launcher в пределах Brand/CSS.", "checked": True},
|
||||
{"text": "Объединить email/password в одном Authentik challenge через IdentificationStage.password_stage.", "checked": True},
|
||||
{"text": "Включить ru locale и dark theme на уровне Authentik Brand settings.", "checked": True},
|
||||
{"text": "Скрыть Authentik brand в базовом authentication page title/brand.", "checked": True},
|
||||
{"text": "Исключить Authentik My applications dashboard из пользовательского маршрута.", "checked": True},
|
||||
{"text": "Исключить Authentik application logout dashboard из пользовательского маршрута.", "checked": True},
|
||||
"Поддержать returnTo для прямых ссылок на приложения.",
|
||||
"Поддержать forced login для диагностики.",
|
||||
"Спроектировать recovery/enrollment/MFA без раскрытия Authentik UI.",
|
||||
|
|
|
|||
Loading…
Reference in New Issue