# IAM Service Architecture Analysis ## Overview / Tổng quan **Service**: `iam-service` - Enterprise-Grade Identity & Access Management **TypeScript Files**: 176 files **Status**: Production Ready (95% implementation) **Last Updated**: Jan 4, 2026 ## Module Structure / Cấu trúc Module ### Production Modules (14 modules) ``` src/modules/ ├── common/ # Shared utilities, base classes ├── feature/ # Feature flags (inherited from template) ├── health/ # Health check endpoints ├── metrics/ # Prometheus metrics ├── auth/ # Core authentication (login, register, logout) ├── rbac/ # Role-Based Access Control ├── token/ # JWT & Refresh token management ├── session/ # Session management with device tracking ├── mfa/ # Multi-Factor Authentication (TOTP) ├── social/ # Social OAuth (Google, Facebook, GitHub) ├── oidc/ # OpenID Connect (Provider + Client) ├── identity/ # Identity management (users, profiles, orgs) ├── access/ # Access management (requests, reviews, analytics) └── governance/ # Governance & compliance (reports, policies, risk) ``` ### Module Breakdown #### Core Authentication Modules ##### 1. Auth Module **Purpose**: Core authentication flows **Key Features**: - Email/password registration & login - Password reset & change - Bcrypt hashing (cost factor 12) - JWT token generation - CSRF protection **Endpoints**: ``` POST /api/v1/auth/register POST /api/v1/auth/login POST /api/v1/auth/logout POST /api/v1/auth/refresh POST /api/v1/auth/change-password GET /api/v1/auth/me ``` ##### 2. Token Module **Purpose**: JWT and refresh token management **Features**: - Access tokens (15min lifetime) - Refresh tokens (7 days lifetime) - Token rotation with family tracking - Secure HTTP-only cookies - Token blacklisting (on logout) ##### 3. Session Module **Purpose**: User session management **Features**: - Device fingerprinting - IP address tracking - Location analysis - Multiple concurrent sessions - Session listing & termination **Endpoints**: ``` GET /api/v1/sessions # List user sessions DELETE /api/v1/sessions/:id # Terminate specific session DELETE /api/v1/sessions/all # Terminate all sessions ``` ##### 4. MFA Module **Purpose**: Multi-Factor Authentication **Features**: - TOTP (Time-based One-Time Password) - QR code generation - Backup codes - Device management - Recovery procedures **Endpoints**: ``` POST /api/v1/mfa/totp/enable POST /api/v1/mfa/totp/verify POST /api/v1/mfa/totp/validate POST /api/v1/mfa/totp/disable GET /api/v1/mfa/devices ``` ##### 5. Social Module **Purpose**: Social OAuth integration **Supported Providers**: - Google OAuth 2.0 - Facebook Login - GitHub OAuth **Flow**: ``` User → Redirect to Provider → Callback → Create/Link Account → JWT Token ``` **Endpoints**: ``` GET /api/v1/auth/social/google GET /api/v1/auth/social/facebook GET /api/v1/auth/social/github GET /api/v1/auth/social/google/callback GET /api/v1/auth/social/facebook/callback GET /api/v1/auth/social/github/callback ``` ##### 6. OIDC Module **Purpose**: OpenID Connect Provider & Client **Features**: - OIDC Provider implementation - OIDC Client for SSO - Discovery endpoint - UserInfo endpoint - Token introspection #### Authorization Modules ##### 7. RBAC Module **Purpose**: Role-Based Access Control **Permission Model**: `resource:action:scope` **Features**: - Role management (CRUD) - Permission management - User-role assignments (with expiration) - User-permission overrides (direct permissions) - Permission caching (5min TTL) - Group-based permissions **Key Entities**: - **Role**: Named collection of permissions (e.g., ADMIN, MANAGER, USER) - **Permission**: Granular access (e.g., `users:create:org`, `posts:delete:own`) - **UserRole**: User-role assignment (can expire) - **UserPermission**: Direct permission grants (override roles) **Endpoints**: ``` GET /api/v1/rbac/roles POST /api/v1/rbac/roles GET /api/v1/rbac/permissions POST /api/v1/users/:id/roles DELETE /api/v1/users/:id/roles/:roleId POST /api/v1/users/:id/permissions ``` **Permission Check Flow**: ``` Request → Check Direct Permissions → Check Role Permissions → Check Group Permissions → Allow/Deny ``` #### Identity Management Modules ##### 8. Identity Module **Purpose**: User lifecycle & profile management **Features**: - User CRUD operations - Extended user profiles - Email/phone/document verification - Multi-tenant organizations - Groups with hierarchical structure - Bulk user import/export - User deactivation/reactivation **Database Models**: - `User` - Core user accounts - `UserProfile` - Extended user information - `Organization` - Multi-tenant organizations - `Group` - User groups within orgs - `GroupMember` - Group membership - `IdentityVerification` - Verification records **Endpoints**: ``` GET /api/v1/identity/users POST /api/v1/identity/users GET /api/v1/identity/users/:id PUT /api/v1/identity/users/:id POST /api/v1/identity/users/:id/deactivate POST /api/v1/identity/users/:id/reactivate GET /api/v1/identity/users/:id/profile PUT /api/v1/identity/users/:id/profile POST /api/v1/identity/users/:id/avatar ``` #### Access Management Modules ##### 9. Access Module **Purpose**: Access request workflows & reviews **Features**: - Access request workflows with multi-person approval - Access reviews & certification campaigns - Access analytics & usage reporting - Anomaly detection - Just-In-Time (JIT) access - Temporary access grants **Database Models**: - `AccessRequest` - Access request workflows - `AccessRequestApprover` - Multi-person approval chains - `AccessReview` - Access certification campaigns - `AccessReviewItem` - Individual review items **Endpoints**: ``` POST /api/v1/access/requests GET /api/v1/access/requests POST /api/v1/access/requests/:id/approve POST /api/v1/access/requests/:id/reject POST /api/v1/access/reviews GET /api/v1/access/reviews POST /api/v1/access/reviews/:id/items/:itemId/review GET /api/v1/access/analytics/usage ``` ##### 10. Governance Module **Purpose**: Compliance & governance reporting **Features**: - GDPR compliance reporting - SOC2 compliance reporting - ISO27001 compliance reporting - HIPAA compliance support - Policy templates & versioning - Risk scoring & management - Audit log analysis **Database Models**: - `ComplianceReport` - Compliance reports (GDPR, SOC2, ISO27001, HIPAA) - `PolicyTemplate` - Reusable policy templates - `RiskScore` - User risk scoring **Endpoints**: ``` POST /api/v1/governance/compliance/reports GET /api/v1/governance/compliance/reports POST /api/v1/governance/compliance/reports/:id/generate GET /api/v1/governance/risk/scores POST /api/v1/governance/risk/calculate GET /api/v1/governance/policies/templates ``` ## Core Services / Core Services ### 1. Multi-Layer Cache Service **Location**: `src/core/cache/` **Pattern**: L1 (Memory) → L2 (Redis) → L3 (Database) **Implementation**: - **L1 Cache**: NodeCache (in-memory), 60s TTL, 10k keys max - **L2 Cache**: Redis, 5-15min TTL, distributed - **L3**: Prisma with connection pooling **Cached Data**: | Data Type | L1 TTL | L2 TTL | Use Case | |-----------|--------|--------|----------| | User Data | 60s | 15min | Profile, permissions | | Permissions | 60s | 5min | Authorization checks | | User Roles | 60s | 5min | Role assignments | | Token Validation | N/A | Token lifetime | JWT blacklist | **Cache Invalidation**: ```typescript // Pattern-based invalidation await cacheService.invalidatePattern('user:123:*'); // Event-driven invalidation onUserUpdate → invalidateCache('user:${userId}') onPermissionChange → invalidateCache('user:${userId}:permissions') ``` ### 2. Audit Service (Event Sourcing) **Location**: `src/core/events/` **Purpose**: Complete audit trail for compliance **Features**: - Event sourcing for all authentication and authorization events - 7-year retention for compliance (GDPR, SOC2) - Correlation ID tracking - Event replay capability **Event Types**: ```typescript enum AuditEventType { LOGIN_SUCCESS = 'LOGIN_SUCCESS', LOGIN_FAILURE = 'LOGIN_FAILURE', LOGOUT = 'LOGOUT', TOKEN_REFRESH = 'TOKEN_REFRESH', PASSWORD_CHANGE = 'PASSWORD_CHANGE', ROLE_ASSIGNED = 'ROLE_ASSIGNED', PERMISSION_GRANTED = 'PERMISSION_GRANTED', ACCESS_DENIED = 'ACCESS_DENIED', SESSION_CREATED = 'SESSION_CREATED', SESSION_TERMINATED = 'SESSION_TERMINATED', MFA_ENABLED = 'MFA_ENABLED', // ... many more } ``` **Database Model**: ```prisma model AuthEvent { id String @id @default(cuid()) eventType String // AuditEventType userId String? email String? ipAddress String? userAgent String? success Boolean metadata Json? correlationId String? createdAt DateTime @default(now()) @@index([userId, createdAt]) @@index([eventType, createdAt]) @@index([correlationId]) } ``` ### 3. Security Service (Zero-Trust Validator) **Location**: `src/core/security/` **Purpose**: Zero-trust security validation **Features**: - Device fingerprinting - IP address analysis - Location validation - Behavioral analysis - Risk-based authentication - Anomaly detection **Zero-Trust Checks**: ``` 1. Valid JWT token? ✓ 2. Token not blacklisted? ✓ 3. Session still active? ✓ 4. Device fingerprint matches? ✓ 5. IP address in allowed range? ✓ 6. No suspicious behavior detected? ✓ → ALLOW REQUEST ``` ### 4. Encryption Service **Location**: `src/core/security/encryption.service.ts` **Algorithm**: AES-256-GCM **Purpose**: Encrypt PII at rest **Features**: - Symmetric encryption for sensitive data - IV (Initialization Vector) per encryption - Authentication tag for integrity - Key rotation support **Usage**: ```typescript // Encrypt sensitive data const encrypted = encryptionService.encrypt(ssn); // Store: "iv:tag:ciphertext" // Decrypt when needed const ssn = encryptionService.decrypt(encrypted); ``` ## Middleware Stack / Stack Middleware ```typescript // Execution Order (from main.ts) 1. Helmet // Security headers 2. CORS // Cross-origin config 3. Rate Limiting // Dynamic rate limiting (by role) 4. Correlation ID // Request tracing 5. Request Logger // Structured logging 6. Zero-Trust Validator // Security validation 7. Body Parsers // JSON, URL-encoded 8. Cookie Parser // Parse cookies 9. Metrics // Prometheus instrumentation 10. Routes // API routes 11. Not Found Handler // 404 handling 12. Error Handler // Global error handling (LAST) ``` ### Dynamic Rate Limiting **Implementation**: Redis-backed distributed rate limiting **Limits by Role**: ```typescript const rateLimitsByRole = { anonymous: { windowMs: 15 * 60 * 1000, max: 50 }, // 50 req/15min user: { windowMs: 15 * 60 * 1000, max: 100 }, // 100 req/15min moderator: { windowMs: 15 * 60 * 1000, max: 300 }, // 300 req/15min admin: { windowMs: 15 * 60 * 1000, max: 500 }, // 500 req/15min superadmin: { windowMs: 15 * 60 * 1000, max: 1000 }, // 1000 req/15min }; ``` **Login-Specific Limit**: ```typescript const loginLimiter = { windowMs: 15 * 60 * 1000, max: 5, // 5 login attempts per 15 minutes message: 'Too many login attempts, please try again later', }; ``` ## Database Schema / Schema Database **Database**: PostgreSQL 14+ **ORM**: Prisma **Total Models**: 30+ ### Core Models #### Authentication - `User` - User accounts (email, password, MFA status) - `Session` - Active sessions (device, IP, location) - `RefreshToken` - Refresh tokens (with family tracking) - `AuthEvent` - Audit log (event sourcing) - `SocialAccount` - Linked OAuth accounts - `MFADevice` - TOTP and WebAuthn devices #### Authorization - `Role` - Named roles (ADMIN, MANAGER, USER) - `Permission` - Granular permissions (`resource:action:scope`) - `UserRole` - User-role assignments (with expiration) - `RolePermission` - Role-permission mappings - `UserPermission` - Direct user permissions (override roles) - `Policy` - ABAC policies (JSON Logic conditions) #### Identity - `Organization` - Multi-tenant organizations - `Group` - User groups within organizations - `GroupMember` - Group membership (with roles) - `UserProfile` - Extended user information - `IdentityVerification` - Email/phone/document verification #### Access Management - `AccessRequest` - Access request workflows - `AccessRequestApprover` - Multi-person approval chains - `AccessReview` - Access certification campaigns - `AccessReviewItem` - Individual review items #### Governance - `ComplianceReport` - GDPR, SOC2, ISO27001, HIPAA reports - `PolicyTemplate` - Reusable policy templates - `RiskScore` - User risk scores ## API Surface / Bề mặt API **Total Endpoints**: 50+ **Base Path**: `/api/v1` ### Endpoint Categories | Category | Endpoints | Module | |----------|-----------|--------| | Authentication | 10+ | auth, token, session | | Social Auth | 6 | social | | OIDC | 5+ | oidc | | MFA | 5 | mfa | | RBAC | 8 | rbac | | Identity | 12+ | identity | | Access | 8+ | access | | Governance | 6+ | governance | | Health | 3 | health | | Metrics | 1 | metrics | ## Security Features / Tính năng Bảo mật ### Defense-in-Depth Layers 1. **Network Layer**: - HTTPS/TLS enforcement - CORS configuration - Rate limiting (distributed) 2. **Application Layer**: - Helmet (security headers) - Input validation (Zod) - SQL injection prevention (Prisma ORM) - XSS prevention (CSP) 3. **Authentication Layer**: - Bcrypt (cost factor 12) - JWT with short lifetime (15min) - Refresh token rotation - MFA (TOTP) - Social OAuth 4. **Authorization Layer**: - RBAC (role-based) - ABAC (attribute-based) - Direct permissions (override roles) - Permission caching 5. **Data Layer**: - AES-256-GCM encryption for PII - Token hashing (SHA-256) - Password hashing (bcrypt) 6. **Audit Layer**: - Event sourcing - Correlation IDs - 7-year retention - Compliance reporting ## Performance Optimizations / Tối ưu Hiệu suất ### Caching Strategy - **Cache Hit Rate**: 80-90% for permissions - **Response Time**: P95 < 100ms - **Token Validation**: < 1ms (L1 cache hit) - **Permission Check**: < 5ms (L2 cache hit) ### Database Optimizations - Connection pooling (Prisma default: 10) - Indexed queries (25+ indexes) - Selective field fetching - Batch operations where possible ### Redis Optimizations - Connection pooling - Pipeline operations - Pub/Sub for cache invalidation - Distributed rate limiting ## Observability / Khả năng quan sát ### Metrics (Prometheus) - HTTP request duration (by endpoint, status) - HTTP request count - Active sessions (gauge) - Cache hit/miss ratio - Database query duration - Authentication success/failure rate - Authorization checks (allow/deny) ### Logging (Winston) - Structured JSON logs - Correlation IDs in every log - Request/response logging - Error stack traces (dev only) - Audit event logging ### Tracing (OpenTelemetry + Jaeger) - HTTP request spans - Database query spans - Cache operation spans - External API call spans - Authentication flow spans ### Health Checks - `/health/live` - Liveness (is process running?) - `/health/ready` - Readiness (can serve traffic? checks DB + Redis) - `/health` - Full health (with dependency status) ## Production Readiness / Sẵn sàng Production - ✅ Multi-layer caching (L1/L2/L3) - ✅ Zero-trust architecture - ✅ Device fingerprinting - ✅ Dynamic rate limiting - ✅ Event sourcing for audit - ✅ Compliance reporting (GDPR, SOC2, ISO27001, HIPAA) - ✅ Multi-factor authentication - ✅ Social OAuth integration - ✅ OpenID Connect - ✅ RBAC + ABAC authorization - ✅ Encryption for PII - ✅ Comprehensive logging - ✅ Prometheus metrics - ✅ Jaeger tracing - ✅ Health checks (K8s compatible) - ✅ Docker deployment - ✅ Kubernetes manifests - ✅ Graceful shutdown - ✅ Connection pooling ## Comparison with Template / So sánh với Template | Feature | Template | IAM Service | |---------|----------|-------------| | **Modules** | 4 | 14 | | **TypeScript Files** | 38 | 176 | | **Database Models** | 1 (example) | 30+ | | **API Endpoints** | 5 (example) | 50+ | | **Authentication** | ❌ | ✅ (7 methods) | | **Authorization** | ❌ | ✅ (RBAC + ABAC) | | **Caching** | ❌ | ✅ (3-layer) | | **Rate Limiting** | ❌ | ✅ (Dynamic by role) | | **Audit Logging** | Basic | ✅ (Event sourcing) | | **Security** | Basic (Helmet) | ✅ (Zero-trust) | | **MFA** | ❌ | ✅ (TOTP) | | **Social OAuth** | ❌ | ✅ (3 providers) | | **OIDC** | ❌ | ✅ (Provider + Client) | | **Compliance** | ❌ | ✅ (4 frameworks) | | **Encryption** | ❌ | ✅ (AES-256-GCM) | ## Summary / Tóm tắt `iam-service` is an **enterprise-grade IAM platform** built on top of the `_template` foundation, demonstrating: - **Complete authentication system** (password, social, OIDC, MFA) - **Advanced authorization** (RBAC + ABAC + direct permissions) - **Zero-trust security** (device fingerprinting, behavioral analysis) - **High performance** (multi-layer caching, 80-90% cache hit rate) - **Compliance-ready** (GDPR, SOC2, ISO27001, HIPAA reporting) - **Production-hardened** (95% implementation complete) It showcases **real-world patterns** for: - Distributed caching - Event sourcing - Zero-trust architecture - Multi-tenant support - Access governance - Compliance automation