Перейти к основному содержимому

Идентификация и доступ

Зачем нужно

Identity отвечает за вход пользователя, аккаунты, профили, educator_profile, роли, семейный и организационный доступ, OAuth/OIDC, безопасность и аудит входа.

Документация домена должна быть достаточной, чтобы по ней можно было разработать identity-сервис с нуля: спроектировать БД, API, серверную часть, фронтенд, админку, интеграции и проверки безопасности.

Что входит

  • пользователи, профили, контакты и кастомные поля;
  • educator_profile как анкету/контакты/предметы/классы/trust profile преподавателя без выдачи прав;
  • аутентификация, сессии, JWT, refresh token rotation, saved accounts;
  • OAuth/OIDC authorization server для сервисов экосистемы;
  • RBAC, permissions, роли и назначения ролей;
  • семьи, детские аккаунты, родительский доступ, делегированные сессии;
  • справочник организаций, рабочий контур организаций и организационный access layer;
  • членство пользователей в организациях, роли и права внутри организаций;
  • команды внутри организаций и членство в командах;
  • приглашения, заявки на вступление, заявки на владение и передача владения;
  • ученики организации как не-user записи для организационных сценариев;
  • дубли, ручная склейка организаций и административное управление организациями;
  • безопасность пользователя: методы входа, активность, смена пароля, устройства;
  • audit logs и событийная семантика identity;
  • админка identity и bootstrap-хостинг части platform-owned runtime endpoints без переноса ownership.

Что не входит

  • общая UI-система, API-конвенции, событийная шина и observability — это platform/;
  • учебный прогресс, enrollment, курсы, уроки и дорожная карта — это lms;
  • Learning Workspace, learning_group и learning_group_participant — это lms;
  • биллинг, покупки, commercial account, договоры, счета, оплаты, entitlement и расчёт зарплат — это crm;
  • олимпиадное участие ученика, регистрация, работа, результат и публикация — это competitions;
  • подборки задач, ownership задач и попытки решения — это task-bank;
  • публичная витрина и SEO — это storefront;
  • управленческая аналитика и планирование — это management;
  • франшизные бизнес-процессы не выделены в текущие 7 доменов; если появится franchise-домен, он будет потреблять organization context из identity;
  • runtime capabilities platform-слоя: notifications, plugins, settings, navigation, i18n и feature flags — это platform по ADR-035. identity-api может временно хостить их endpoints, но не становится владельцем.

Чем владеет

Identity — источник истины по сущностям, перечисленным в ../../ecosystem/ownership.md#identity. В частности: user, user_profile, educator_profile, student_profile, user_credentials, user_auth_methods, user_sessions, refresh_token, user_role_assignment, family_group, user_family_group, delegated_session, child_device_authorization, organization_reference, organization, organization_membership, organization_team, organization_student, organization_ownership_claim, organization_ownership_transfer, organization_merge, permission_grant, oauth_client, oauth_authorization_code, oauth_refresh_token, actor_context.

Главные правила

  • Один пользователь — один аккаунт; роли, семьи, организации и контексты действия не подменяют личность.
  • Глобальной роли teacher нет.
  • educator_profile — анкета и trust profile, а не источник прав.
  • Learning Workspace не принадлежит identity; identity отдаёт ему user, educator_profile, family/organization scopes и actor context.
  • Пароль обязателен у каждого пользователя, даже если включён OTP/OAuth.
  • Access token короткоживущий, refresh token ротируется и хранится защищённо.
  • RBAC проверяется на сервере; фронтенд может скрывать элементы, но не отвечает за безопасность.
  • Семья и организация — разные модели доступа.
  • organization_reference помогает искать и нормализовать организации, но не даёт прав.
  • organization — identity-owned access/context layer; продуктовые домены используют его как контекст, но не владеют им.
  • organization_student — официальная или подтверждённая запись ученика внутри организации; это не student_profile семьи, не learning_group_participant, не competition_participant и не lms_enrollment.
  • Product permissions остаются в доменах-владельцах; identity хранит organization context, локальные роли и grants только с ключами из общего permissions catalog.
  • Actor context фиксирует действие в контексте ребёнка/организации без подмены userId.
  • Audit фиксирует действия безопасности и изменения прав.
  • Внешние интеграции работают через OAuth/OIDC, scoped API и события.

Карта документов

Канонический набор

ДокументЧто описывает
scope.mdАкторы, зоны ответственности, соседи, контексты действия
data-model.mdКанонические сущности, связи, lifecycle
database-schema.mdPostgreSQL DDL, типы, FK, индексы, constraints
state-machines.mdСтатусы и переходы auth, sessions, invitations, OAuth
api-map.mdГруппы endpoints, права, ошибки, пагинация, идемпотентность
api-contracts.mdDTO, validation, response schemas, error codes
permissions-matrix.mdEndpoint/action → permission → scope → actor context → audit
events.mdКаталог событий и подписки
screen-spec.mdUser/admin screens, поля, состояния, фильтры
user-flows.mdВнутридоменные сценарии identity
security.mdСессии, методы входа, устройства, смена пароля
integrations.mdСвязи identity с экосистемой и внешними провайдерами
test-plan.mdUnit, integration, e2e, security tests
acceptance.mdКритерии готовности домена

Подспеки

ДокументЧто описывает
features/auth.mdЯдро аутентификации, JWT, sessions, brute-force защита
features/oauth-server.mdOIDC discovery, authorization code + PKCE, consent, tokens
features/users.mdСущность пользователя, контакты, кастомные поля
features/family.mdСемейные группы, детские аккаунты, делегированные сессии
features/organizations.mdОрганизации, команды, членство, приглашения
features/rbac.mdРоли, permissions, назначения, проверки
features/notifications.mdBootstrap-hosting spec для platform-owned notifications
features/admin.mdАдминка identity
features/security-parameters.mdPassword policy, JWT/OAuth TTL, retention, CORS, cookies

Платформенный слой (общие технические контракты)

Файлы UI Kit, API Gateway, Frontend Core, Topology, Plugins, Transports, Logging — общие платформенные документы и описаны в ../../platform/. Identity использует platform-слой, не дублирует его.

Порядок разработки с нуля

  1. Прочитать ../../platform/overview.md и связанные платформенные документы.
  2. Зафиксировать модель данных из data-model.md и DDL из database-schema.md.
  3. Реализовать миграции, seed roles/permissions/settings и database constraints.
  4. Реализовать state machines из state-machines.md.
  5. Реализовать API guard, envelope/errors, audit по api-map.md и api-contracts.md.
  6. Применить security.md и features/security-parameters.md.
  7. Реализовать users, auth, sessions, refresh token rotation и reset password (features/auth.md).
  8. Реализовать RBAC (features/rbac.md), family (features/family.md) и organizations (features/organizations.md).
  9. Добавить OAuth/OIDC authorization server (features/oauth-server.md).
  10. Подключить события identity (events.md); platform-owned notifications подключаются как bootstrap capability по features/notifications.md.
  11. Собрать identity-admin-web и пользовательские экраны по screen-spec.md.
  12. Прогнать test-plan.md и проверить домен по acceptance.md.

Связанные документы