Identity service — canonical identity registry пользователей. Это системный источник истины об identity, отделенный от хранения credentials и от orchestration-логики входа.
Ключевая роль:
- canonical user identity;
- операции identity lookup и регистрации;
- связка identity с account и credential контурами.
Интерфейсы и связи:
- внутренний протокол:
gRPC; - upstream:
Credential service,Auth Service,Account service; - публичного API нет.
Разделы
- Код:
services/auth/identity-service/ - Язык: Python 3.12+
- Протокол: gRPC (internal)
- Proto:
proto/aiops/identity/v1/identity.proto - Приоритет: HIGH
- Владелец: Алексей Шалаев
Архитектура
Clean Architecture Layers
Core (core/):
- user/ — User aggregate (User ID, Username, Status)
- identifier/ — Identifier aggregate (Email/Phone, Verification status)
- verification_challenge/ — VerificationChallenge entity (OTP codes)
Use Cases (use_cases/):
- CreateUserUseCase — регистрация нового пользователя
- GetUserUseCase — получение пользователя по ID или username
- AttachIdentifierUseCase — привязка email/phone
- StartVerificationUseCase — инициация верификации
- VerifyIdentifierUseCase — подтверждение OTP
- DisableUserUseCase / EnableUserUseCase — управление статусом
Infrastructure (infra/):
- PostgreSQL для хранения canonical identities
- Redis для кеширования
- Kafka для публикации событий через Transactional Outbox
API (api/servicers/v1/):
- gRPC servicers для всех use cases
События
Сервис публикует события в Kafka:
identity.user.events
| Event Type | Описание | Payload |
|---|---|---|
| USER_CREATED | Новый пользователь создан | { id, username, status, created_at } |
| USER_DISABLED | Пользователь деактивирован | { id, username, disabled_at } |
| USER_ENABLED | Пользователь активирован | { id, username, enabled_at } |
| USER_DELETED | Пользователь удален | { id, username, deleted_at } |
identity.identifier.events
| Event Type | Описание | Payload |
|---|---|---|
| IDENTIFIER_ADDED | Email/Phone привязан к пользователю | { user_id, identifier, type, verified } |
| IDENTIFIER_VERIFIED | Идентификатор верифицирован | { user_id, identifier, verified_at } |
| IDENTIFIER_REMOVED | Идентификатор отвязан | { user_id, identifier, removed_at } |
Consumers: - Account service — синхронизирует username - Herald — отправляет verification codes (planned)
Зависимости
Uses (downstream)
Сервис не вызывает другие сервисы, только публикует события.
Used by (upstream)
- Auth Service — использует для регистрации и lookup
- Credential service — связывает пароли с User ID
- Account service — синхронизирует username
Data Stores
- PostgreSQL —
identity_db(users, identifiers, verification_challenges) - Redis — кеш для часто запрашиваемых identities
- Kafka — event publishing
Паттерны
- Transactional Outbox — события сохраняются в
outbox_eventsв той же транзакции - Unit of Work — все операции с БД через UoW
- Repository Pattern —
PostgresUserRepository,PostgresIdentifierRepository - Domain Services —
UserDomainService(валидация username, enable/disable)
Связанные страницы
Домен
- Identity Domain — доменная модель
Фичи
- Authentication Feature — использует Identity service
Архитектура
- Event Flow — как распространяются события
- Security Architecture / Authentication — роль в auth chain
- Domain Boundaries — границы Identity домена
Данные
- Event Schema Catalog — схемы событий Identity
Инженерия
- Backend Overview — архитектурные паттерны
- Event-Driven Patterns — использование Transactional Outbox
Каталог
- Service Catalog — полный список сервисов с зависимостями