4.1 KiB
Auth Model
Identity source
Единственный источник identity: Authentik.
Launcher, Plane и будущие приложения не хранят пароли пользователей и не становятся главным источником truth по логину.
User journey
Целевой production flow:
nodedc.ru marketing site
-> Войти на платформу
-> platform login
-> NODE.DC Launcher
-> application tiles
-> Task Manager / future apps
UI платформы не должен показывать пользователю название identity-провайдера. В пользовательских кнопках и текстах используется нейтральное "Войти", "Вход на платформу", "Сессия NODE.DC".
Прямые ссылки на приложения остаются допустимым пользовательским сценарием. Если session нет, приложение или внешний proxy/auth layer должен увести пользователя в login flow и после успешного входа вернуть к исходному приложению.
Required claims
Минимальный normalized user object:
type AuthUser = {
sub: string;
email: string;
name?: string;
groups: string[];
entitlements?: string[];
};
Обязательные проверки:
issсовпадает с настроенным issuer;audсовпадает с client/application audience;expне истек;subнепустой и стабилен;emailприсутствует для user-facing приложений;groupsилиentitlementsсодержат требуемый app access.
Groups
Минимальная группа верхнего уровня:
nodedc:superadmin
Launcher:
nodedc:launcher:admin
nodedc:launcher:user
Task Manager:
nodedc:taskmanager:admin
nodedc:taskmanager:user
Future apps:
nodedc:agents:access
nodedc:tender:access
nodedc:onec:access
nodedc:dm:access
Access levels
Уровень 1: Authentik app access.
Отвечает на вопрос, можно ли открыть приложение.
Launcher показывает каталог приложений как витрину, а не скрывает все недоступные плитки. Для приложения без доступа кнопка перехода отключена и отображается состояние "Нет доступа". Это важно для продаж, onboarding и понимания доступных модулей платформы.
Уровень 2: Launcher admin roles.
Отвечает на вопрос, можно ли управлять пользователями, группами, app registry и audit.
Уровень 3: Application roles.
Например, Plane workspace owner/admin/member/viewer. Эти роли остаются внутри Plane.
Launcher backend requirements
Backend должен:
- хранить Authentik service token только server-side;
- выполнять admin calls к Authentik API;
- хранить audit log;
- возвращать frontend только нормализованные данные пользователя и разрешенные действия;
- не отдавать access/refresh/service tokens в browser bundle.
Plane identity link
Минимальная таблица или эквивалентная модель в Plane:
external_identity_link
provider = authentik
authentik_sub
email
plane_user_id
created_at
last_login_at
status
Правило миграции:
- сначала искать link по
authentik_sub; - если link найден, логинить связанный
plane_user_id; - если link не найден, но email совпадает и включен migration auto-link, создать link;
- если доступа нет, вернуть deny.