Манитон Docs

Auth & Identity Service

Центр управления доступом, Keycloak и профили пользователей

Auth & Identity Service (Готов ✅)

Статус: Полностью реализован. Интегрирован с Keycloak и шиной событий Kafka.

Auth & Identity Service (apps/services/auth) — это объединенный микросервис, который является "точкой входа" для управления безопасностью и данными участников платформы Манитон. Он интегрирует Keycloak в качестве Identity Provider (IdP) и расширяет его доменной логикой ЦФА.

Почему они объединены?

В архитектуре Манитон аутентификация (кто вы?) и идентификация (ваш KYC статус и лимиты) неразрывно связаны. Объединение в один сервис позволяет:

  1. Атомарно управлять учетной записью: создание пользователя в Keycloak одновременно инициализирует его профиль и лимиты в нашей системе.
  2. Снизить задержки: RBAC-проверки (права доступа) учитывают как роли из Keycloak, так и флаги комплаенса из локальной БД.
  3. Единый API: Другие сервисы (например, CFA-Core) обращаются к одному узлу для валидации запроса.

Основные компоненты

1. Интеграция с Keycloak

Сервис инкапсулирует работу с Keycloak через Admin Client и OpenID Connect:

  • Token Validation: Проверка подписи JWT через JWKS (JSON Web Key Set).
  • Auto-Bootstrap: Автоматическое создание Realm, Client и базовых ролей (investor, compliance_officer, admin) при первом запуске.
  • Sync: Синхронизация данных пользователя (email, phone) между Keycloak и локальной PostgreSQL.

2. Identity (Идентификация и KYC)

Управление расширенными данными, которые не хранятся в Keycloak:

  • KYC Cases: Жизненный цикл заявок на верификацию (загрузка документов, ручная проверка, статус).
  • Limits (259-ФЗ): Контроль остатков лимитов на операции (например, 600к/мес для определенных уровней).
  • Sanctions & Scoring: Интеграция с внешними провайдерами для проверки по черным спискам.

3. Authz (Авторизация и RBAC)

  • Role Mapping: Управление ролями Keycloak (investor, trader, support_agent, system_admin, treasury_manager, compliance_officer).
  • Permissions: Проверка разрешений на выполнение конкретных действий (например, CFA_ISSUE, USERS_BLOCK).
  • Protection: Декораторы NestJS для защиты Kafka-обработчиков (@RequirePermissions).

Технологический стек

  • NestJS: Основной фреймворк.
  • Keycloak: Внешний IdP.
  • Drizzle ORM: Работа с PostgreSQL.
  • BullMQ: Очереди задач для асинхронных проверок (санкции, риск-скоринг).
  • Kafka: RPC-интерфейс и публикация событий.

Схема данных (Drizzle)

Loading diagram...

Kafka RPC API

МетодОписание
authz.validateTokenПроверка токена и получение профиля с правами.
identity.submitKycПодача документов на верификацию.
identity.getUserLimitsПолучение текущих лимитов пользователя.
identity.listUsersПоиск по базе пользователей (для админов).

События

Сервис гарантирует доставку событий через Outbox Pattern:

  • UserCreated: При первой авторизации через Keycloak.
  • KycStatusChanged: После одобрения заявки офицером.
  • UserBlocked: Экстренная блокировка по AML.

On this page