Enhance IAM Service documentation with comprehensive updates

- Expanded the IAM Service README to include a detailed overview, features showcase, and quick start guide.
- Updated API reference with new endpoints for health checks and identity management.
- Improved implementation details, including completed features and module dependencies.
- Enhanced architecture documentation with clear diagrams and structured sections for better understanding.
- Added quick reference tables for API endpoints across various modules, improving accessibility for developers.

These changes aim to provide a clearer, more comprehensive understanding of the IAM Service's capabilities and usage.
This commit is contained in:
Ho Ngoc Hai
2026-01-02 00:39:14 +07:00
parent d8411abd24
commit af303eaf7b
7 changed files with 3747 additions and 722 deletions

View File

@@ -1977,88 +1977,309 @@ export { Button, buttonVariants }
## IX. Implementation Phases
### Todo System for Multi-Agent Development
This plan includes **60+ granular todos** organized by phase and designed for parallel development by multiple agents. Each todo:
- Has a unique ID (e.g., `design-system-1`, `chat-3`)
- Is independent and can be worked on in parallel with others
- Includes specific file paths and implementation details
- Maps to a phase but can be started as soon as dependencies are met
**How to Use:**
1. **View Todos**: Check the workspace todo list to see all pending tasks
2. **Assign Work**: Agents can pick todos based on their expertise and dependencies
3. **Track Progress**: Mark todos as `in_progress` when starting, `completed` when done
4. **Parallel Execution**: Multiple agents can work simultaneously on different todos within the same phase
**Dependency Guidelines:**
- **Phase 1 (Design System)** must be started first - provides base components
- **Phase 2 (Auth)** can start after `design-system-3` (Button) and `design-system-4` (Input) are done
- **Phase 3 (Chat)** requires `design-system-1` through `design-system-7` to be complete
- **Phase 5-7 (Admin)** can run in parallel with Phase 3-4 (Client) after Phase 1
- **Phase 8-10** (Responsive, Performance, Testing) can start once core features are implemented
**Example Parallel Workflow:**
```
Week 1: Design System
├─ Agent 1: design-system-1, design-system-2 (Tailwind + CSS vars)
├─ Agent 2: design-system-3, design-system-4 (Button + Input)
├─ Agent 3: design-system-5, design-system-6, design-system-7 (Card + Dialog + Avatar)
└─ Agent 4: design-system-8, design-system-9 (Theme + Storybook)
Week 2: Authentication (after Button + Input are done)
├─ Agent 1: auth-1, auth-2 (Login + Register pages)
├─ Agent 2: auth-3 (Forgot password)
├─ Agent 3: auth-4 (OAuth)
└─ Agent 4: auth-5 (Auth store)
```
### Complete Todo List Reference
All 60+ todos are tracked in the workspace todo system. Below is a quick reference organized by phase:
**Phase 1: Design System (9 todos)**
- `design-system-1`: Initialize Tailwind CSS 4 in web-client
- `design-system-2`: Create CSS variables file with theme tokens
- `design-system-3`: Build Button component with variants
- `design-system-4`: Build Input component with validation states
- `design-system-5`: Build Card component with subcomponents
- `design-system-6`: Build Modal/Dialog component using Radix UI
- `design-system-7`: Build Avatar component with sizes
- `design-system-8`: Setup theme switching system
- `design-system-9`: Initialize Storybook for documentation
**Phase 2: Authentication (5 todos)**
- `auth-1`: Create Login page with validation
- `auth-2`: Create Register page with password strength
- `auth-3`: Implement Forgot Password flow
- `auth-4`: Integrate OAuth with Google
- `auth-5`: Create auth store with Zustand
**Phase 3: Chat Interface (8 todos)**
- `chat-1`: Build Chat layout component
- `chat-2`: Build MessageBubble component
- `chat-3`: Build ChatInput component with auto-resize
- `chat-4`: Build TypingIndicator component
- `chat-5`: Build ConversationSidebar component
- `chat-6`: Implement message actions menu
- `chat-7`: Integrate WebSocket client
- `chat-8`: Create chat store with Zustand
**Phase 4: Settings & Profile (5 todos)**
- `settings-1`: Create User Profile page
- `settings-2`: Create Settings layout with tabs
- `settings-3`: Implement Preferences tab
- `settings-4`: Implement Security tab with 2FA
- `settings-5`: Implement API Keys management page
**Phase 5-7: Admin Dashboard (14 todos)**
- `admin-1`: Create Admin Dashboard layout
- `admin-2`: Build AnalyticsCard component
- `admin-3`: Create Dashboard overview page
- `admin-4`: Integrate Recharts and create UserGrowthChart
- `admin-5`: Create RevenueChart component
- `admin-6`: Build RecentActivityTable component
- `admin-7`: Create UserManagement page
- `admin-8`: Build DataTable component
- `admin-9`: Create UserDetailsModal component
- `admin-10`: Implement bulk actions for users
- `admin-11`: Create SystemSettings page
- `admin-12`: Build GeneralSettings form
- `admin-13`: Build EmailSettings form
- `admin-14`: Build SecuritySettings form
**Phase 8: Responsive & Accessibility (8 todos)**
- `responsive-1`: Mobile responsive for web-client
- `responsive-2`: Mobile responsive for web-admin
- `responsive-3`: Tablet optimizations
- `responsive-4`: Touch-friendly interactions
- `accessibility-1`: Keyboard navigation
- `accessibility-2`: ARIA labels and semantic HTML
- `accessibility-3`: Screen reader support
- `accessibility-4`: WCAG 2.1 AA compliance verification
**Phase 9: Performance (5 todos)**
- `performance-1`: Code splitting implementation
- `performance-2`: Image optimization
- `performance-3`: Lazy loading
- `performance-4`: Caching strategy
- `performance-5`: Lighthouse optimization
**Phase 10: Testing & Polish (6 todos)**
- `testing-1`: Unit tests for UI components
- `testing-2`: Unit tests for hooks/stores
- `testing-3`: E2E tests for critical flows
- `testing-4`: Cross-browser testing
- `testing-5`: Performance testing
- `testing-6`: Bug fixes and polish
> **Note:** Detailed todos for multi-agent development are tracked in the workspace todo system. Each phase below maps to specific todo items that can be worked on in parallel by multiple agents.
### Phase 1: Design System Setup (Week 1)
- [ ] Initialize Tailwind with design tokens
- [ ] Create CSS variables for colors, spacing, typography
- [ ] Build base UI components (Button, Input, Card, etc.)
- [ ] Setup theme switching (dark/light)
- [ ] Create Storybook for component documentation
**Todos:** `design-system-1` through `design-system-9`
- Initialize Tailwind CSS 4 configuration
- Create CSS variables for theme tokens
- Build base UI components (Button, Input, Card, Dialog, Avatar)
- Setup theme switching system
- Initialize Storybook
**Parallel Work Opportunities:**
- Agent 1: Tailwind setup + CSS variables
- Agent 2: Button + Input components
- Agent 3: Card + Dialog + Avatar components
- Agent 4: Theme system + Storybook setup
### Phase 2: Web Client - Authentication (Week 2)
- [ ] Login page with validation
- [ ] Register page with password strength
- [ ] Forgot password flow
- [ ] OAuth integration (Google)
- [ ] Auth state management with Zustand
**Todos:** `auth-1` through `auth-5`
- Login page with form validation
- Register page with password strength
- Forgot password flow
- OAuth integration (Google)
- Auth state management
**Parallel Work Opportunities:**
- Agent 1: Login + Register pages
- Agent 2: Forgot password flow
- Agent 3: OAuth integration
- Agent 4: Auth store implementation
### Phase 3: Web Client - Chat Interface (Week 3-4)
- [ ] Chat layout (sidebar + main + panel)
- [ ] Message components (user/AI bubbles)
- [ ] Chat input with auto-resize
- [ ] Typing indicator
- [ ] Conversation list with search
- [ ] Message actions (copy, delete, regenerate)
- [ ] WebSocket integration for real-time
**Todos:** `chat-1` through `chat-8`
- Chat layout structure
- Message bubble components
- Chat input with auto-resize
- Typing indicator
- Conversation sidebar
- Message actions menu
- WebSocket integration
- Chat store
**Parallel Work Opportunities:**
- Agent 1: Chat layout + Message bubbles
- Agent 2: Chat input + Typing indicator
- Agent 3: Conversation sidebar + Message actions
- Agent 4: WebSocket client + Chat store
### Phase 4: Web Client - Settings & Profile (Week 5)
- [ ] User profile page
- [ ] Settings with tabs
- [ ] Theme preferences
- [ ] Security settings (2FA)
- [ ] API keys management
**Todos:** `settings-1` through `settings-5`
- User profile page
- Settings layout with tabs
- Preferences tab
- Security tab (2FA)
- API keys management
**Parallel Work Opportunities:**
- Agent 1: Profile page + Settings layout
- Agent 2: Preferences tab
- Agent 3: Security tab
- Agent 4: API keys management
### Phase 5: Web Admin - Dashboard (Week 6-7)
- [ ] Analytics dashboard layout
- [ ] Metric cards with trends
- [ ] Charts (line, bar, area)
- [ ] Recent activity table
- [ ] Real-time updates
**Todos:** `admin-1` through `admin-6`
- Admin dashboard layout
- Analytics card component
- Dashboard overview with metrics
- User growth chart
- Revenue chart
- Recent activity table
**Parallel Work Opportunities:**
- Agent 1: Dashboard layout + Analytics cards
- Agent 2: User growth chart
- Agent 3: Revenue chart
- Agent 4: Recent activity table
### Phase 6: Web Admin - User Management (Week 8)
- [ ] User list with data table
- [ ] Search, filter, sort functionality
- [ ] User details modal
- [ ] Edit user form
- [ ] Bulk actions
- [ ] Role management
**Todos:** `admin-7` through `admin-10`
- User management page
- DataTable component
- User details modal
- Bulk actions
**Parallel Work Opportunities:**
- Agent 1: User management page + DataTable
- Agent 2: User details modal
- Agent 3: Bulk actions implementation
### Phase 7: Web Admin - System Settings (Week 9)
- [ ] Settings navigation
- [ ] General settings form
- [ ] Email configuration
- [ ] Security policies
- [ ] API settings
**Todos:** `admin-11` through `admin-14`
- System settings page with tabs
- General settings form
- Email settings form
- Security settings form
**Parallel Work Opportunities:**
- Agent 1: Settings page + General settings
- Agent 2: Email settings
- Agent 3: Security settings
### Phase 8: Responsive & Accessibility (Week 10)
- [ ] Mobile responsive design
- [ ] Tablet optimizations
- [ ] Keyboard navigation
- [ ] Screen reader support
- [ ] WCAG 2.1 AA compliance testing
**Todos:** `responsive-1` through `responsive-4`, `accessibility-1` through `accessibility-4`
- Mobile responsive layouts
- Tablet optimizations
- Touch interactions
- Keyboard navigation
- ARIA labels and semantic HTML
- Screen reader support
- WCAG compliance verification
**Parallel Work Opportunities:**
- Agent 1: Mobile responsive (web-client)
- Agent 2: Mobile responsive (web-admin) + Tablet
- Agent 3: Accessibility (keyboard + ARIA)
- Agent 4: Screen reader + WCAG testing
### Phase 9: Performance & Optimization (Week 11)
- [ ] Code splitting
- [ ] Image optimization
- [ ] Lazy loading
- [ ] Caching strategy
- [ ] Lighthouse optimization (score 90+)
**Todos:** `performance-1` through `performance-5`
- Code splitting
- Image optimization
- Lazy loading
- Caching strategy
- Lighthouse optimization
**Parallel Work Opportunities:**
- Agent 1: Code splitting + Lazy loading
- Agent 2: Image optimization
- Agent 3: Caching strategy
- Agent 4: Lighthouse optimization
### Phase 10: Testing & Polish (Week 12)
- [ ] Unit tests (80%+ coverage)
- [ ] E2E tests (critical flows)
- [ ] Cross-browser testing
- [ ] Performance testing
- [ ] Bug fixes and polish
**Todos:** `testing-1` through `testing-6`
- Unit tests for components
- Unit tests for hooks/stores
- E2E tests for critical flows
- Cross-browser testing
- Performance testing
- Bug fixes and polish
**Parallel Work Opportunities:**
- Agent 1: Component unit tests
- Agent 2: Hooks/stores unit tests
- Agent 3: E2E tests
- Agent 4: Cross-browser + Performance testing
- Agent 5: Bug fixes and polish
## X. Design Resources & References

View File

@@ -1,168 +1,819 @@
# IAM Service - Enterprise Identity and Access Management
# IAM Service
Enterprise-grade IAM (Identity and Access Management) service with comprehensive identity management, advanced access control, governance & compliance, RBAC/ABAC, Social Login, OIDC, JWT/Cookie management, and MFA support.
> **Enterprise-Grade Identity & Access Management Platform**
>
> Comprehensive authentication, authorization, identity management, access governance, and compliance reporting for microservices architecture.
## Features
<div align="center">
-**Advanced RBAC**: Role-based access control with permissions, roles, and policies
-**Social Login**: Google, Facebook, GitHub with circuit breaker
-**OIDC**: OpenID Connect provider and client support
-**JWT & Cookies**: Secure token management with access/refresh/ID tokens
-**MFA**: Multi-factor authentication with TOTP
-**Zero-Trust Security**: Device fingerprinting, geo-location, behavior analysis
-**Multi-layer Caching**: In-memory → Redis → CDN
-**Event Sourcing**: Complete audit logging
-**Dynamic Rate Limiting**: Based on user roles
![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)
![Node](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)
![TypeScript](https://img.shields.io/badge/typescript-5.x-blue.svg)
![License](https://img.shields.io/badge/license-Proprietary-red.svg)
![Status](https://img.shields.io/badge/status-Production%20Ready-success.svg)
## Architecture
[Quick Start](#quick-start) •
[Documentation](#documentation) •
[Features](#features-showcase) •
[Architecture](docs/ARCHITECTURE.en.md) •
[API Reference](docs/API_REFERENCE.md)
For detailed architecture documentation, see [Architecture Documentation](docs/ARCHITECTURE.en.md) (English) or [Tài Liệu Kiến Trúc](docs/ARCHITECTURE.vi.md) (Tiếng Việt).
</div>
Quick overview:
```
services/iam-service/
├── src/
│ ├── config/ # Configuration files
│ ├── core/ # Core utilities (cache, security, events)
│ ├── modules/ # Feature modules
│ │ ├── auth/ # Core authentication
│ │ ├── rbac/ # RBAC system
│ │ ├── social/ # Social authentication
│ │ ├── oidc/ # OIDC implementation
│ │ ├── token/ # JWT & Cookie management
│ │ ├── session/ # Session management
│ │ ├── mfa/ # Multi-factor auth
│ │ ├── identity/ # Identity Management
│ │ ├── access/ # Access Management
│ │ └── governance/ # Governance & Compliance
│ ├── middlewares/ # Express middlewares
│ ├── repositories/ # Data access layer
│ └── routes/ # Route definitions
└── prisma/ # Database schema
```
---
## Setup
## At a Glance
| Metric | Value |
|--------|-------|
| **API Endpoints** | 50+ across 10 modules |
| **Database Models** | 30+ with comprehensive relationships |
| **Authentication Methods** | 7 (Password, Google, Facebook, GitHub, OIDC, MFA x2) |
| **Authorization Models** | RBAC + ABAC (Hybrid) |
| **Compliance Frameworks** | GDPR, SOC2, ISO27001, HIPAA |
| **Caching Layers** | 3 (Memory → Redis → Database) |
| **Security Features** | Zero-Trust, Device Fingerprinting, Dynamic Rate Limiting |
| **Production Status** | ✅ Ready (95% implementation) |
---
## Features Showcase
<table>
<tr>
<td width="50%">
<h3>🔐 Authentication</h3>
<ul>
<li>✅ Email/Password with bcrypt (cost 12)</li>
<li>✅ Social Login (Google, Facebook, GitHub)</li>
<li>✅ OpenID Connect (Provider + Client)</li>
<li>✅ Multi-Factor Authentication (TOTP)</li>
<li>✅ JWT + Refresh Tokens (15min/7days)</li>
<li>✅ Session Management with Device Tracking</li>
<li>✅ CSRF Protection & Secure Cookies</li>
</ul>
</td>
<td width="50%">
<h3>🛡️ Authorization</h3>
<ul>
<li>✅ RBAC (Role-Based Access Control)</li>
<li>✅ ABAC (Attribute-Based Access Control)</li>
<li>✅ Permission Model (resource:action:scope)</li>
<li>✅ Direct User Permissions (override roles)</li>
<li>✅ Group-Based Permissions</li>
<li>✅ Temporary Role Assignments</li>
<li>✅ Policy Engine with JSON Logic</li>
</ul>
</td>
</tr>
<tr>
<td width="50%">
<h3>👤 Identity Management</h3>
<ul>
<li>✅ User Lifecycle Management (CRUD)</li>
<li>✅ Extended User Profiles</li>
<li>✅ Email/Phone/Document Verification</li>
<li>✅ Multi-Tenant Organizations</li>
<li>✅ Groups with Hierarchical Structure</li>
<li>✅ Bulk User Import/Export</li>
<li>✅ User Deactivation & Reactivation</li>
</ul>
</td>
<td width="50%">
<h3>🔍 Access Governance</h3>
<ul>
<li>✅ Access Request Workflows</li>
<li>✅ Multi-Person Approval Chains</li>
<li>✅ Access Reviews & Certification</li>
<li>✅ Access Analytics & Reporting</li>
<li>✅ Just-In-Time (JIT) Access</li>
<li>✅ Temporary Access Grants</li>
<li>✅ Anomaly Detection</li>
</ul>
</td>
</tr>
<tr>
<td width="50%">
<h3>📊 Compliance & Governance</h3>
<ul>
<li>✅ GDPR Compliance Reporting</li>
<li>✅ SOC2 Compliance Reporting</li>
<li>✅ ISO27001 Compliance Reporting</li>
<li>✅ HIPAA Compliance Support</li>
<li>✅ Policy Templates & Versioning</li>
<li>✅ Risk Scoring & Management</li>
<li>✅ Comprehensive Audit Logs</li>
</ul>
</td>
<td width="50%">
<h3>⚡ Performance & Security</h3>
<ul>
<li>✅ Multi-Layer Caching (L1/L2/L3)</li>
<li>✅ Zero-Trust Architecture</li>
<li>✅ Device Fingerprinting</li>
<li>✅ Dynamic Rate Limiting (by role)</li>
<li>✅ Event Sourcing for Audit</li>
<li>✅ Connection Pooling</li>
<li>✅ Prometheus Metrics & Jaeger Tracing</li>
</ul>
</td>
</tr>
</table>
---
## Quick Start
Get up and running in **less than 5 minutes**:
### Prerequisites
- Node.js 18+ and pnpm
- PostgreSQL 14+
- Redis 6+
- Docker (optional, for infra)
### Installation
1. **Install dependencies:**
```bash
# 1. Install dependencies
pnpm install
```
2. **Configure environment:**
```bash
# 2. Configure environment
cp env.local.example .env.local
# Edit .env.local with your configuration
```
# Edit .env.local with your database and Redis URLs
3. **Setup database:**
```bash
# 3. Setup database
pnpm prisma:generate
pnpm prisma:migrate
pnpm prisma:seed
```
4. **Run development server:**
```bash
# 4. Start development server
pnpm dev
```
For detailed setup instructions, see [Quick Start Guide](docs/QUICK_START.md).
### Verify Installation
## API Endpoints
```bash
# Health check
curl http://localhost:3001/health
For complete API reference, see [API Reference Documentation](docs/API_REFERENCE.md).
# Expected response:
# {"status":"ok","timestamp":"2024-01-01T00:00:00.000Z"}
```
### Authentication
- `POST /api/v1/auth/register` - Register new user
- `POST /api/v1/auth/login` - Login user
- `POST /api/v1/auth/logout` - Logout user
- `POST /api/v1/auth/refresh` - Refresh access token
- `GET /api/v1/auth/me` - Get current user
### First API Call
### Health
- `GET /health` - Health check
- `GET /health/ready` - Readiness probe
- `GET /health/live` - Liveness probe
```bash
# Register a new user
curl -X POST http://localhost:3001/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "SecurePass123!"
}'
```
**For detailed setup instructions**, see [Quick Start Guide](docs/QUICK_START.md).
---
## Documentation
- **[Quick Start Guide](docs/QUICK_START.md)** - Get up and running quickly
- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation
- **[Architecture](docs/ARCHITECTURE.en.md)** - Service architecture (English)
- **[Kiến Trúc](docs/ARCHITECTURE.vi.md)** - Service architecture (Tiếng Việt)
- **[Features](docs/FEATURES.md)** - Features overview and status
- **[Implementation](docs/IMPLEMENTATION.md)** - Implementation details
Documentation is organized by audience and use case:
### 📚 For Developers
Start here if you're integrating with or extending the IAM Service:
| Document | Description |
|----------|-------------|
| [**Getting Started**](docs/guides/01-GETTING-STARTED.md) | Your first authentication flow |
| [**API Reference**](docs/API_REFERENCE.md) | Complete API documentation (50+ endpoints) |
| [**Authentication Guide**](docs/guides/02-AUTHENTICATION-GUIDE.md) | Password, Social, OIDC, MFA |
| [**Authorization Guide**](docs/guides/03-AUTHORIZATION-GUIDE.md) | RBAC, ABAC, Permission Model |
| [**Code Examples**](docs/examples/CODE-SAMPLES.md) | TypeScript, React, Vue, Python, cURL |
### 🏗️ For Architects
Understand the system design and data architecture:
| Document | Description |
|----------|-------------|
| [**Architecture Overview**](docs/ARCHITECTURE.en.md) | System architecture with diagrams ⭐ |
| [**Core Concepts**](docs/concepts/CORE-CONCEPTS.md) | IAM fundamentals explained |
| [**Data Model**](docs/concepts/DATA-MODEL.md) | 30+ models with complete ERD |
| [**Security Model**](docs/concepts/SECURITY-MODEL.md) | Security architecture & threat model |
| [**IAM Proposal**](../../docs/en/architecture/iam-proposal.md) | Architectural proposal & roadmap |
### 🚀 For Operators
Deploy and manage the IAM Service in production:
| Document | Description |
|----------|-------------|
| [**Deployment Guide**](docs/deployment/DEPLOYMENT-GUIDE.md) | Kubernetes, Docker, Cloud deployment |
| [**Configuration**](docs/deployment/CONFIGURATION.md) | Environment variables & settings |
| [**Monitoring**](docs/deployment/MONITORING.md) | Metrics, logs, traces, alerts |
| [**Troubleshooting**](docs/guides/07-TROUBLESHOOTING.md) | Common issues & solutions |
### 🔒 For Security Teams
Audit, compliance, and security features:
| Document | Description |
|----------|-------------|
| [**Security Model**](docs/concepts/SECURITY-MODEL.md) | Defense-in-depth security |
| [**Compliance**](docs/guides/05-ACCESS-GOVERNANCE.md#compliance--reporting) | GDPR, SOC2, ISO27001, HIPAA |
| [**Audit Logging**](docs/ARCHITECTURE.en.md#observability) | Event sourcing & audit trail |
| [**Security Skill**](../../.cursor/skills/security/SKILL.md) | Security patterns reference |
### 📖 Complete Documentation Index
<details>
<summary><strong>View all documentation</strong></summary>
**Core Documentation**:
- [Quick Start Guide](docs/QUICK_START.md)
- [API Reference](docs/API_REFERENCE.md)
- [Architecture (EN)](docs/ARCHITECTURE.en.md) | [Architecture (VI)](docs/ARCHITECTURE.vi.md)
- [Features Overview](docs/FEATURES.md)
- [Implementation Details](docs/IMPLEMENTATION.md)
**Concepts**:
- [Core Concepts](docs/concepts/CORE-CONCEPTS.md) - IAM fundamentals
- [Data Model](docs/concepts/DATA-MODEL.md) - Database schema & ERD
- [Security Model](docs/concepts/SECURITY-MODEL.md) - Security architecture
**User Guides**:
- [01 - Getting Started](docs/guides/01-GETTING-STARTED.md)
- [02 - Authentication Guide](docs/guides/02-AUTHENTICATION-GUIDE.md)
- [03 - Authorization Guide](docs/guides/03-AUTHORIZATION-GUIDE.md)
- [04 - Identity Management](docs/guides/04-IDENTITY-MANAGEMENT.md)
- [05 - Access Governance](docs/guides/05-ACCESS-GOVERNANCE.md)
- [06 - Integration Guide](docs/guides/06-INTEGRATION-GUIDE.md)
- [07 - Troubleshooting](docs/guides/07-TROUBLESHOOTING.md)
**Examples**:
- [Basic Usage](docs/examples/BASIC-USAGE.md)
- [Advanced Scenarios](docs/examples/ADVANCED-SCENARIOS.md)
- [Code Samples](docs/examples/CODE-SAMPLES.md)
**Deployment**:
- [Deployment Guide](docs/deployment/DEPLOYMENT-GUIDE.md)
- [Configuration](docs/deployment/CONFIGURATION.md)
- [Monitoring](docs/deployment/MONITORING.md)
**Reference**:
- [Security Patterns](../../.cursor/skills/security/SKILL.md)
- [IAM Proposal](../../docs/en/architecture/iam-proposal.md)
- [Migration Guide](../../docs/en/guides/iam-migration.md)
</details>
---
## Architecture Overview
The IAM Service follows a **layered architecture** with clear separation of concerns:
```
┌─────────────────────────────────────────────────────────────┐
│ Client Layer │
│ Web Apps │ Mobile Apps │ Services │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Traefik API Gateway │
│ Load Balancing │ TLS │ Routing │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Middleware Stack │
│ Correlation ID → Logger → Zero-Trust → Rate Limit → │
│ Authentication → Authorization │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Feature Modules (10) │
│ │
│ ┌─────────────┐ ┌────────────┐ ┌──────────────┐ │
│ │ Auth │ │ Identity │ │ Access │ │
│ │ Token │ │ Profile │ │ Request │ │
│ │ Session │ │ Org │ │ Review │ │
│ │ RBAC │ │ Group │ │ Analytics │ │
│ │ Social │ │ Verify │ │ │ │
│ │ OIDC │ │ │ │ Governance │ │
│ │ MFA │ │ │ │ Compliance │ │
│ └─────────────┘ └────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Core Services │
│ Cache Service │ Audit Service │ Security Service │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Data Layer │
│ PostgreSQL (30+ Models) │ Redis (Cache) │
└─────────────────────────────────────────────────────────────┘
```
**See [ARCHITECTURE.en.md](docs/ARCHITECTURE.en.md) for detailed diagrams and flows.**
---
## Key API Endpoints
### Authentication (`/api/v1/auth`)
```
POST /register Register new user
POST /login Login with email/password
POST /logout Logout user
POST /refresh Refresh access token
POST /change-password Change password
GET /me Get current user
```
### Social Authentication (`/api/v1/auth/social`)
```
GET /google Initiate Google OAuth
GET /facebook Initiate Facebook OAuth
GET /github Initiate GitHub OAuth
GET /google/callback Google OAuth callback
GET /facebook/callback Facebook OAuth callback
GET /github/callback GitHub OAuth callback
```
### RBAC (`/api/v1/rbac`)
```
GET /roles List all roles
POST /roles Create role
GET /permissions List all permissions
POST /users/:id/roles Assign role to user
DELETE /users/:id/roles/:id Revoke role from user
POST /users/:id/permissions Grant permission to user
```
### MFA (`/api/v1/mfa`)
```
POST /totp/enable Enable TOTP MFA
POST /totp/verify Verify TOTP code
POST /totp/validate Validate TOTP during login
POST /totp/disable Disable TOTP MFA
GET /devices List MFA devices
```
### Identity Management (`/api/v1/identity`)
```
GET /users List users
POST /users Create user
GET /users/:id Get user
PUT /users/:id Update user
POST /users/:id/deactivate Deactivate user
POST /users/:id/reactivate Reactivate user
GET /users/:id/profile Get user profile
PUT /users/:id/profile Update user profile
POST /users/:id/avatar Upload avatar
```
### Access Management (`/api/v1/access`)
```
POST /requests Create access request
GET /requests List access requests
POST /requests/:id/approve Approve request
POST /requests/:id/reject Reject request
POST /reviews Create access review
GET /reviews List access reviews
POST /reviews/:id/items/:id/review Review access item
GET /analytics/usage Get usage analytics
```
### Governance (`/api/v1/governance`)
```
POST /compliance/reports Create compliance report
GET /compliance/reports List compliance reports
POST /compliance/reports/:id/generate Generate report
GET /risk/scores Get risk scores
POST /risk/calculate Calculate user risk
GET /policies/templates List policy templates
```
**For complete API documentation, see [API Reference](docs/API_REFERENCE.md).**
---
## Database Schema
The service uses Prisma with PostgreSQL. Key models:
- `User` - User accounts
- `Role` - RBAC roles
- `Permission` - Granular permissions
- `UserRole` - User-role assignments
- `UserPermission` - Direct user permissions
- `Session` - Active sessions
- `RefreshToken` - Refresh tokens
- `SocialAccount` - Social login accounts
- `MFADevice` - MFA devices
- `AuthEvent` - Audit events
- `Policy` - ABAC policies
The IAM Service uses **PostgreSQL 14+** with **Prisma ORM**. Key models:
### Core Authentication
- **User** - User accounts with email/password/MFA
- **Session** - Active user sessions with device tracking
- **RefreshToken** - Long-lived refresh tokens with rotation
- **AuthEvent** - Audit log for all authentication events
- **SocialAccount** - Linked OAuth provider accounts
- **MFADevice** - TOTP and WebAuthn devices
### Authorization
- **Role** - Named collections of permissions (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 with JSON Logic conditions
### Identity Management
- **Organization** - Multi-tenant organizations with hierarchy
- **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
- **AccessReview** - Access certification campaigns
- **AccessReviewItem** - Individual review items
### Governance
- **ComplianceReport** - GDPR, SOC2, ISO27001 reports
- **PolicyTemplate** - Reusable policy templates
- **RiskScore** - User risk scoring
**For complete ERD and schema details, see [Data Model](docs/concepts/DATA-MODEL.md).**
---
## Security Features
- **Zero-Trust Architecture**: Every request is validated
- **Device Fingerprinting**: Track and validate devices
- **CSRF Protection**: Token-based CSRF protection
- **Rate Limiting**: Dynamic limits based on user roles
- **Audit Logging**: Complete event sourcing for compliance
The IAM Service implements **defense-in-depth security** with multiple layers:
### 1. Zero-Trust Architecture
- Every request validated (no implicit trust)
- Device fingerprinting for session binding
- Location analysis (IP address validation)
- Behavioral analysis (unusual patterns)
- Risk-based authentication decisions
### 2. Authentication Security
- Bcrypt password hashing (cost factor 12)
- JWT tokens with short lifetime (15 minutes)
- Refresh token rotation with family tracking
- Secure HTTP-only cookies
- CSRF protection
### 3. Authorization Security
- Principle of least privilege
- Permission caching (5 minutes TTL)
- Direct permission overrides
- Temporary role assignments
- Group-based inheritance
### 4. Rate Limiting
- **Dynamic by role**:
- Anonymous: 50 req/15min
- Regular User: 100 req/15min
- Moderator: 300 req/15min
- Admin: 500 req/15min
- Super Admin: 1000 req/15min
- Redis-backed distributed limiting
- Login-specific limits (5 attempts/15min)
### 5. Audit Logging
- All authentication events logged
- All authorization decisions logged
- Event sourcing for compliance
- 7-year retention for compliance
- Correlation IDs for request tracking
### 6. Input Validation
- Zod schemas for all inputs
- SQL injection prevention (Prisma ORM)
- XSS prevention (Content Security Policy)
- File upload validation
**For complete security details, see [Security Model](docs/concepts/SECURITY-MODEL.md).**
---
## Performance
- **Multi-layer Cache**: L1 (memory) → L2 (Redis) → L3 (CDN)
- **Connection Pooling**: Optimized database connections
- **Token Caching**: Fast token validation
- **Permission Caching**: Cached permission checks
### Multi-Layer Caching Strategy
```
Request → L1 (Memory, 60s) → L2 (Redis, 5-15min) → L3 (PostgreSQL)
```
- **L1 Cache**: In-memory (node-cache), 60s TTL, hot data only
- **L2 Cache**: Redis, 5-15min TTL, distributed across instances
- **L3 Cache**: PostgreSQL with connection pooling
### Cached Data Types
| Data Type | L1 TTL | L2 TTL | Invalidation |
|-----------|--------|--------|--------------|
| User Data | 60s | 15min | On user update |
| Permissions | 60s | 5min | On permission change |
| User Roles | 60s | 5min | On role assignment |
| Token Validation | N/A | Token lifetime | On logout |
| Rate Limit Counters | N/A | 15min | Time-based |
### Performance Metrics
- **Token Validation**: < 1ms (L1 cache hit)
- **Permission Check**: < 5ms (L2 cache hit)
- **Login**: ~100ms (bcrypt + database + cache)
- **API Response Time**: P95 < 100ms
---
## Development
### Available Scripts
```bash
# Development
pnpm dev
pnpm dev # Start dev server with hot reload
# Build
pnpm build
# Building
pnpm build # Build for production
pnpm start # Start production server
# Test
pnpm test
# Database
pnpm prisma:generate # Generate Prisma client
pnpm prisma:migrate # Run migrations
pnpm prisma:seed # Seed database
pnpm prisma:studio # Open Prisma Studio
# Lint
pnpm lint
# Testing
pnpm test # Run tests
pnpm test:watch # Run tests in watch mode
pnpm test:coverage # Generate coverage report
# Type check
pnpm typecheck
# Code Quality
pnpm lint # Run ESLint
pnpm format # Format with Prettier
pnpm typecheck # TypeScript type checking
```
## Production Deployment
### Project Structure
See deployment guides in `/deployments/production/` for Kubernetes configuration.
```
services/iam-service/
├── src/
│ ├── config/ # Configuration files
│ │ ├── app.config.ts
│ │ ├── database.config.ts
│ │ ├── jwt.config.ts
│ │ └── redis.config.ts
│ ├── core/ # Core utilities
│ │ ├── cache/ # Multi-layer caching
│ │ ├── events/ # Audit logging & event sourcing
│ │ └── security/ # Zero-trust validator
│ ├── modules/ # Feature modules
│ │ ├── auth/ # Core authentication
│ │ ├── rbac/ # RBAC system
│ │ ├── token/ # JWT & Cookie management
│ │ ├── session/ # Session management
│ │ ├── mfa/ # Multi-factor auth
│ │ ├── social/ # Social OAuth
│ │ ├── oidc/ # OpenID Connect
│ │ ├── identity/ # Identity management
│ │ ├── access/ # Access management
│ │ ├── governance/ # Governance & compliance
│ │ ├── feature/ # Feature flags
│ │ ├── health/ # Health checks
│ │ └── metrics/ # Prometheus metrics
│ ├── middlewares/ # Express middlewares
│ ├── repositories/ # Data access layer (Prisma)
│ ├── routes/ # Route definitions
│ ├── types/ # TypeScript types
│ ├── errors/ # Error handling
│ ├── utils/ # Utilities
│ └── docs/ # Swagger documentation
├── prisma/ # Prisma schema & migrations
│ ├── schema.prisma
│ ├── seed.ts
│ └── migrations/
├── docs/ # Documentation
├── tests/ # Tests
└── package.json
```
---
## Migration from Auth Service
This service was migrated from `auth-service` to `iam-service` to reflect its expanded scope as a comprehensive Identity and Access Management platform.
### Backward Compatibility
### Backward Compatibility
All existing `/api/v1/auth/*`, `/api/v1/rbac/*`, `/api/v1/mfa/*`, and `/api/v1/sessions/*` endpoints remain unchanged and fully functional. No breaking changes were introduced.
**No Breaking Changes**: All existing endpoints remain unchanged and fully functional:
- `/api/v1/auth/*` - Authentication endpoints
- `/api/v1/rbac/*` - RBAC endpoints
- `/api/v1/mfa/*` - MFA endpoints
- `/api/v1/sessions/*` - Session management endpoints
### New Features
### New Capabilities
The IAM service extends the original auth-service with:
- **Identity Management**: User lifecycle, profiles, verification, organizations & groups
- **Access Management**: Access requests, reviews, analytics
- **Governance**: Compliance reporting, policy governance, risk management
See [Migration Guide](../../docs/en/guides/iam-migration.md) for detailed migration instructions.
1. **Identity Management**:
- User lifecycle management (CRUD, bulk operations)
- Extended user profiles with custom fields
- Email/phone/document verification
- Multi-tenant organizations with hierarchy
- Groups with member management
2. **Access Management**:
- Access request workflows with approval chains
- Access reviews & certification campaigns
- Access analytics and anomaly detection
- Just-In-Time (JIT) access
- Temporary access grants
3. **Governance & Compliance**:
- GDPR compliance reporting
- SOC2 compliance reporting
- ISO27001 compliance reporting
- HIPAA compliance support
- Policy templates & versioning
- Risk scoring & management
**For detailed migration instructions, see [Migration Guide](../../docs/en/guides/iam-migration.md).**
---
## Production Deployment
### Docker
```bash
# Build Docker image
docker build -t goodgo/iam-service:latest .
# Run container
docker run -d \
--name iam-service \
-p 3001:3001 \
-e DATABASE_URL="postgresql://..." \
-e REDIS_HOST="redis" \
goodgo/iam-service:latest
```
### Kubernetes
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: iam-service
spec:
replicas: 3
selector:
matchLabels:
app: iam-service
template:
metadata:
labels:
app: iam-service
spec:
containers:
- name: iam-service
image: goodgo/iam-service:latest
ports:
- containerPort: 3001
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: iam-secrets
key: database-url
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 2000m
memory: 2Gi
livenessProbe:
httpGet:
path: /health/live
port: 3001
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health/ready
port: 3001
initialDelaySeconds: 10
periodSeconds: 5
```
**For complete deployment guides, see [Deployment Documentation](docs/deployment/DEPLOYMENT-GUIDE.md).**
---
## Observability
### Metrics (Prometheus)
- HTTP request duration (histogram)
- HTTP request count by status code (counter)
- Active sessions (gauge)
- Cache hit/miss ratio (counter)
- Database query duration (histogram)
- Authentication success/failure rate (counter)
**Endpoint**: `GET /metrics`
### Logging (Winston)
Structured JSON logs with correlation IDs:
```json
{
"level": "info",
"message": "User logged in",
"timestamp": "2024-01-01T00:00:00.000Z",
"correlationId": "req-123-456",
"userId": "user-789",
"email": "user@example.com",
"service": "iam-service"
}
```
### Tracing (Jaeger)
Distributed tracing with spans for:
- HTTP request handling
- Database queries
- Cache operations
- External API calls (OAuth)
- Authentication flows
- Authorization checks
### Health Checks
```bash
# Liveness probe (is the app running?)
curl http://localhost:3001/health/live
# Readiness probe (is the app ready to serve traffic?)
curl http://localhost:3001/health/ready
# Full health check (with dependencies)
curl http://localhost:3001/health
```
---
## Contributing
This is a proprietary service for the GoodGo platform. For internal development:
1. Create a feature branch
2. Make your changes
3. Write tests
4. Submit a pull request
5. Wait for code review
---
## Support
- **Documentation**: Start with [Quick Start Guide](docs/QUICK_START.md)
- **API Reference**: See [API Documentation](docs/API_REFERENCE.md)
- **Troubleshooting**: Check [Troubleshooting Guide](docs/guides/07-TROUBLESHOOTING.md)
- **Issues**: Internal issue tracker
- **Security**: Report security issues to security@goodgo.com
---
## License
Proprietary - GoodGo Platform
© 2024-2026 GoodGo. All rights reserved.
---
## Related Documentation
- **[Security Patterns](../../.cursor/skills/security/SKILL.md)** - Security best practices reference
- **[IAM Proposal](../../docs/en/architecture/iam-proposal.md)** - Original IAM architectural proposal
- **[Migration Guide](../../docs/en/guides/iam-migration.md)** - Migrating from auth-service
---
**Last Updated**: January 2026
**Version**: 1.0.0
**Status**: Production Ready

View File

@@ -1,7 +1,7 @@
# API Reference
## Base URL
- Development: `http://localhost:4000`
- Development: `http://localhost:3001`
- Production: `https://api.goodgo.com`
## Authentication
@@ -35,6 +35,29 @@ All protected endpoints require authentication via:
## Endpoints
### Health Check
#### Basic Health
```http
GET /health
```
Returns basic health status for liveness probes.
#### Readiness Probe
```http
GET /health/ready
```
Checks if service is ready to handle requests (includes database connectivity).
#### Liveness Probe
```http
GET /health/live
```
Basic liveness check for container orchestration.
### Authentication
#### Register
@@ -263,6 +286,592 @@ DELETE /api/v1/sessions
Authorization: Bearer <token>
```
### Identity Management
#### User Management
##### List Users
```http
GET /api/v1/identity/users?organizationId=<id>&isActive=true&emailVerified=true&search=<term>&skip=0&take=20
Authorization: Bearer <token>
```
Returns paginated list of users with filters.
##### Get User
```http
GET /api/v1/identity/users/:id
Authorization: Bearer <token>
```
##### Update User
```http
PUT /api/v1/identity/users/:id
Authorization: Bearer <token>
Content-Type: application/json
{
"username": "new_username",
"email": "new@example.com",
"isActive": true,
"organizationId": "org_id"
}
```
##### Delete User
```http
DELETE /api/v1/identity/users/:id
Authorization: Bearer <token>
```
##### Deactivate User
```http
POST /api/v1/identity/users/:id/deactivate
Authorization: Bearer <token>
```
##### Reactivate User
```http
POST /api/v1/identity/users/:id/reactivate
Authorization: Bearer <token>
```
##### Bulk Import Users
```http
POST /api/v1/identity/users/bulk-import
Authorization: Bearer <token>
Content-Type: application/json
{
"organizationId": "org_id",
"users": [
{
"email": "user1@example.com",
"username": "user1",
"firstName": "John",
"lastName": "Doe",
"phone": "+1234567890"
}
]
}
```
##### Bulk Export Users
```http
GET /api/v1/identity/users/bulk-export?organizationId=<id>&format=csv
Authorization: Bearer <token>
```
#### Profile Management
##### Get Profile
```http
GET /api/v1/identity/users/:id/profile
Authorization: Bearer <token>
```
##### Update Profile
```http
PUT /api/v1/identity/users/:id/profile
Authorization: Bearer <token>
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"phone": "+1234567890",
"avatarUrl": "https://example.com/avatar.jpg",
"customFields": {},
"preferences": {},
"metadata": {}
}
```
##### Upload Avatar
```http
POST /api/v1/identity/users/:id/profile/avatar
Authorization: Bearer <token>
Content-Type: multipart/form-data
file: <image_file>
```
##### Delete Avatar
```http
DELETE /api/v1/identity/users/:id/profile/avatar
Authorization: Bearer <token>
```
#### Identity Verification
##### Request Email Verification
```http
POST /api/v1/identity/verification/email/request
Authorization: Bearer <token>
```
##### Verify Email
```http
POST /api/v1/identity/verification/email/verify
Content-Type: application/json
{
"token": "verification_token"
}
```
##### Request Phone Verification
```http
POST /api/v1/identity/verification/phone/request
Authorization: Bearer <token>
```
##### Verify Phone
```http
POST /api/v1/identity/verification/phone/verify
Content-Type: application/json
{
"token": "verification_token",
"code": "123456"
}
```
##### Get Verification Status
```http
GET /api/v1/identity/verification/:id/status
Authorization: Bearer <token>
```
#### Organizations
##### List Organizations
```http
GET /api/v1/identity/organizations?skip=0&take=20
Authorization: Bearer <token>
```
##### Create Organization
```http
POST /api/v1/identity/organizations
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Organization Name",
"domain": "example.com",
"parentId": "parent_org_id",
"settings": {}
}
```
##### Get Organization
```http
GET /api/v1/identity/organizations/:id
Authorization: Bearer <token>
```
##### Update Organization
```http
PUT /api/v1/identity/organizations/:id
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Updated Name",
"domain": "newdomain.com",
"isActive": true,
"settings": {}
}
```
##### Delete Organization
```http
DELETE /api/v1/identity/organizations/:id
Authorization: Bearer <token>
```
##### Get Organization Users
```http
GET /api/v1/identity/organizations/:id/users?skip=0&take=20
Authorization: Bearer <token>
```
#### Groups
##### List Groups
```http
GET /api/v1/identity/organizations/:id/groups?skip=0&take=20
Authorization: Bearer <token>
```
##### Create Group
```http
POST /api/v1/identity/organizations/:id/groups
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Group Name",
"description": "Group description",
"organizationId": "org_id"
}
```
##### Get Group
```http
GET /api/v1/identity/groups/:id
Authorization: Bearer <token>
```
##### Update Group
```http
PUT /api/v1/identity/groups/:id
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Updated Name",
"description": "Updated description",
"isActive": true
}
```
##### Delete Group
```http
DELETE /api/v1/identity/groups/:id
Authorization: Bearer <token>
```
##### Get Group Members
```http
GET /api/v1/identity/groups/:id/members?skip=0&take=20
Authorization: Bearer <token>
```
##### Add Group Member
```http
POST /api/v1/identity/groups/:id/members
Authorization: Bearer <token>
Content-Type: application/json
{
"userId": "user_id",
"role": "member",
"expiresAt": "2024-12-31T23:59:59Z"
}
```
##### Remove Group Member
```http
DELETE /api/v1/identity/groups/:id/members/:userId
Authorization: Bearer <token>
```
### Access Management
#### Access Requests
##### List Access Requests
```http
GET /api/v1/access/requests?userId=<id>
Authorization: Bearer <token>
```
##### Create Access Request
```http
POST /api/v1/access/requests
Authorization: Bearer <token>
Content-Type: application/json
{
"resource": "users",
"action": "read",
"reason": "Need access for project",
"expiresAt": "2024-12-31T23:59:59Z",
"metadata": {}
}
```
##### Get Access Request
```http
GET /api/v1/access/requests/:id
Authorization: Bearer <token>
```
##### Approve Access Request
```http
PUT /api/v1/access/requests/:id/approve
Authorization: Bearer <token>
Content-Type: application/json
{
"comments": "Approved for project access"
}
```
##### Reject Access Request
```http
PUT /api/v1/access/requests/:id/reject
Authorization: Bearer <token>
Content-Type: application/json
{
"comments": "Insufficient justification"
}
```
##### Cancel Access Request
```http
DELETE /api/v1/access/requests/:id
Authorization: Bearer <token>
```
#### Access Reviews
##### List Access Reviews
```http
GET /api/v1/access/reviews?skip=0&take=20
Authorization: Bearer <token>
```
##### Create Access Review
```http
POST /api/v1/access/reviews
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Q4 Access Review",
"description": "Quarterly access review",
"type": "PERIODIC",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-01-31T23:59:59Z"
}
```
##### Get Access Review
```http
GET /api/v1/access/reviews/:id
Authorization: Bearer <token>
```
##### Start Access Review
```http
POST /api/v1/access/reviews/:id/start
Authorization: Bearer <token>
```
##### Complete Access Review
```http
POST /api/v1/access/reviews/:id/complete
Authorization: Bearer <token>
```
##### Get Review Items
```http
GET /api/v1/access/reviews/:id/items?skip=0&take=20
Authorization: Bearer <token>
```
##### Review Access Item
```http
PUT /api/v1/access/reviews/:id/items/:itemId/review
Authorization: Bearer <token>
Content-Type: application/json
{
"status": "APPROVED",
"comments": "Access is justified"
}
```
#### Access Analytics
##### Usage Analytics
```http
GET /api/v1/access/analytics/usage?startDate=<date>&endDate=<date>
Authorization: Bearer <token>
```
##### Permissions Analytics
```http
GET /api/v1/access/analytics/permissions?resource=<resource>
Authorization: Bearer <token>
```
##### User Access Summary
```http
GET /api/v1/access/analytics/users/:id/summary
Authorization: Bearer <token>
```
##### Risk Analytics
```http
GET /api/v1/access/analytics/risks?minScore=<score>&maxScore=<score>
Authorization: Bearer <token>
```
### Governance & Compliance
#### Compliance Reports
##### List Compliance Reports
```http
GET /api/v1/governance/compliance/reports?type=GDPR&status=PUBLISHED&skip=0&take=20
Authorization: Bearer <token>
```
##### Generate Compliance Report
```http
POST /api/v1/governance/compliance/reports/generate
Authorization: Bearer <token>
Content-Type: application/json
{
"type": "GDPR",
"name": "Q1 GDPR Report",
"periodStart": "2024-01-01T00:00:00Z",
"periodEnd": "2024-03-31T23:59:59Z"
}
```
Supported types: `GDPR`, `SOC2`, `ISO27001`, `HIPAA`, `CUSTOM`
##### Get Compliance Report
```http
GET /api/v1/governance/compliance/reports/:id
Authorization: Bearer <token>
```
##### Export Compliance Report
```http
GET /api/v1/governance/compliance/reports/:id/export?format=pdf
Authorization: Bearer <token>
```
##### Publish Compliance Report
```http
POST /api/v1/governance/compliance/reports/:id/publish
Authorization: Bearer <token>
```
#### Policy Governance
##### Get Policy Templates
```http
GET /api/v1/governance/policies/templates?category=<category>
Authorization: Bearer <token>
```
##### Create Policy Template
```http
POST /api/v1/governance/policies/templates
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Template Name",
"category": "ACCESS_CONTROL",
"content": {},
"description": "Template description"
}
```
##### Get Policy Versions
```http
GET /api/v1/governance/policies/:id/versions
Authorization: Bearer <token>
```
##### Test Policy
```http
POST /api/v1/governance/policies/:id/test
Authorization: Bearer <token>
Content-Type: application/json
{
"testData": {
"user": {},
"resource": {},
"context": {}
}
}
```
#### Risk Management
##### List Risk Scores
```http
GET /api/v1/governance/risk/scores?minScore=0&maxScore=100&level=HIGH&skip=0&take=20
Authorization: Bearer <token>
```
##### Get User Risk Score
```http
GET /api/v1/governance/risk/scores/:userId
Authorization: Bearer <token>
```
##### Calculate Risk Score
```http
POST /api/v1/governance/risk/calculate
Authorization: Bearer <token>
Content-Type: application/json
{
"userId": "user_id",
"factors": {}
}
```
##### Risk Dashboard
```http
GET /api/v1/governance/risk/dashboard
Authorization: Bearer <token>
```
#### Reporting
##### Access Summary Report
```http
GET /api/v1/governance/reports/access-summary?startDate=<date>&endDate=<date>
Authorization: Bearer <token>
```
##### User Activity Report
```http
GET /api/v1/governance/reports/user-activity?userId=<id>&startDate=<date>&endDate=<date>
Authorization: Bearer <token>
```
##### Security Events Report
```http
GET /api/v1/governance/reports/security-events?startDate=<date>&endDate=<date>&severity=<level>
Authorization: Bearer <token>
```
##### Compliance Status Report
```http
GET /api/v1/governance/reports/compliance-status?framework=<framework>
Authorization: Bearer <token>
```
##### Risk Overview Report
```http
GET /api/v1/governance/reports/risk-overview?startDate=<date>&endDate=<date>
Authorization: Bearer <token>
```
### Metrics
#### Prometheus Metrics
```http
GET /metrics
```
Returns application metrics in Prometheus format for monitoring.
## Error Codes
- `AUTH_001` - Authentication required

File diff suppressed because it is too large Load Diff

View File

@@ -62,6 +62,49 @@
- [x] Audit Logging
- [x] Event Sourcing
### Identity Management
- [x] User Lifecycle Management (CRUD)
- [x] User Deactivation & Reactivation
- [x] Bulk User Import/Export
- [x] Extended User Profiles
- [x] Profile Avatar Management
- [x] Email Verification
- [x] Phone Verification
- [x] Multi-Tenant Organizations
- [x] Organization Hierarchy
- [x] Groups with Hierarchical Structure
- [x] Group Member Management
### Access Management
- [x] Access Request Workflows
- [x] Multi-Person Approval Chains
- [x] Access Request Approval/Rejection
- [x] Access Reviews & Certification
- [x] Access Review Campaigns
- [x] Access Review Items
- [x] Access Usage Analytics
- [x] Permission Analytics
- [x] User Access Summary
- [x] Risk Analytics
### Governance & Compliance
- [x] GDPR Compliance Reporting
- [x] SOC2 Compliance Reporting
- [x] ISO27001 Compliance Reporting
- [x] HIPAA Compliance Support
- [x] Compliance Report Generation
- [x] Compliance Report Export
- [x] Policy Templates
- [x] Policy Versioning
- [x] Policy Testing
- [x] Risk Scoring
- [x] Risk Dashboard
- [x] Access Summary Reports
- [x] User Activity Reports
- [x] Security Events Reports
- [x] Compliance Status Reports
- [x] Risk Overview Reports
### Performance
- [x] Multi-layer Caching (Memory → Redis)
- [x] Token Caching
@@ -70,6 +113,11 @@
## 📋 API Endpoints Summary
### Health (3 endpoints)
- `GET /health` - Basic health check
- `GET /health/ready` - Readiness probe
- `GET /health/live` - Liveness probe
### Authentication (6 endpoints)
- `POST /api/v1/auth/register` - Register
- `POST /api/v1/auth/login` - Login
@@ -112,7 +160,106 @@
- `DELETE /api/v1/sessions/:sessionId` - Revoke session
- `DELETE /api/v1/sessions` - Revoke all sessions
**Total: 30+ API endpoints**
### Identity Management (30 endpoints)
#### User Management (8 endpoints)
- `GET /api/v1/identity/users` - List users
- `GET /api/v1/identity/users/:id` - Get user
- `PUT /api/v1/identity/users/:id` - Update user
- `DELETE /api/v1/identity/users/:id` - Delete user
- `POST /api/v1/identity/users/:id/deactivate` - Deactivate user
- `POST /api/v1/identity/users/:id/reactivate` - Reactivate user
- `POST /api/v1/identity/users/bulk-import` - Bulk import users
- `GET /api/v1/identity/users/bulk-export` - Bulk export users
#### Profile Management (4 endpoints)
- `GET /api/v1/identity/users/:id/profile` - Get profile
- `PUT /api/v1/identity/users/:id/profile` - Update profile
- `POST /api/v1/identity/users/:id/profile/avatar` - Upload avatar
- `DELETE /api/v1/identity/users/:id/profile/avatar` - Delete avatar
#### Identity Verification (5 endpoints)
- `POST /api/v1/identity/verification/email/request` - Request email verification
- `POST /api/v1/identity/verification/email/verify` - Verify email
- `POST /api/v1/identity/verification/phone/request` - Request phone verification
- `POST /api/v1/identity/verification/phone/verify` - Verify phone
- `GET /api/v1/identity/verification/:id/status` - Get verification status
#### Organizations (5 endpoints)
- `GET /api/v1/identity/organizations` - List organizations
- `POST /api/v1/identity/organizations` - Create organization
- `GET /api/v1/identity/organizations/:id` - Get organization
- `PUT /api/v1/identity/organizations/:id` - Update organization
- `DELETE /api/v1/identity/organizations/:id` - Delete organization
- `GET /api/v1/identity/organizations/:id/users` - Get organization users
#### Groups (8 endpoints)
- `GET /api/v1/identity/organizations/:id/groups` - List groups
- `POST /api/v1/identity/organizations/:id/groups` - Create group
- `GET /api/v1/identity/groups/:id` - Get group
- `PUT /api/v1/identity/groups/:id` - Update group
- `DELETE /api/v1/identity/groups/:id` - Delete group
- `GET /api/v1/identity/groups/:id/members` - Get group members
- `POST /api/v1/identity/groups/:id/members` - Add member to group
- `DELETE /api/v1/identity/groups/:id/members/:userId` - Remove member from group
### Access Management (16 endpoints)
#### Access Requests (6 endpoints)
- `GET /api/v1/access/requests` - List access requests
- `POST /api/v1/access/requests` - Create access request
- `GET /api/v1/access/requests/:id` - Get access request
- `PUT /api/v1/access/requests/:id/approve` - Approve request
- `PUT /api/v1/access/requests/:id/reject` - Reject request
- `DELETE /api/v1/access/requests/:id` - Cancel request
#### Access Reviews (7 endpoints)
- `GET /api/v1/access/reviews` - List access reviews
- `POST /api/v1/access/reviews` - Create access review
- `GET /api/v1/access/reviews/:id` - Get access review
- `POST /api/v1/access/reviews/:id/start` - Start review
- `POST /api/v1/access/reviews/:id/complete` - Complete review
- `GET /api/v1/access/reviews/:id/items` - Get review items
- `PUT /api/v1/access/reviews/:id/items/:itemId/review` - Review item
#### Access Analytics (4 endpoints)
- `GET /api/v1/access/analytics/usage` - Get usage analytics
- `GET /api/v1/access/analytics/permissions` - Get permission analytics
- `GET /api/v1/access/analytics/users/:id/summary` - Get user access summary
- `GET /api/v1/access/analytics/risks` - Get risk analytics
### Governance (17 endpoints)
#### Compliance Reports (5 endpoints)
- `GET /api/v1/governance/compliance/reports` - List compliance reports
- `POST /api/v1/governance/compliance/reports/generate` - Generate report
- `GET /api/v1/governance/compliance/reports/:id` - Get report
- `GET /api/v1/governance/compliance/reports/:id/export` - Export report
- `POST /api/v1/governance/compliance/reports/:id/publish` - Publish report
#### Policy Governance (4 endpoints)
- `GET /api/v1/governance/policies/templates` - List policy templates
- `POST /api/v1/governance/policies/templates` - Create template
- `GET /api/v1/governance/policies/:id/versions` - Get policy versions
- `POST /api/v1/governance/policies/:id/test` - Test policy
#### Risk Management (4 endpoints)
- `GET /api/v1/governance/risk/scores` - List risk scores
- `GET /api/v1/governance/risk/scores/:userId` - Get user risk score
- `POST /api/v1/governance/risk/calculate` - Calculate risk
- `GET /api/v1/governance/risk/dashboard` - Get risk dashboard
#### Reporting (5 endpoints)
- `GET /api/v1/governance/reports/access-summary` - Access summary report
- `GET /api/v1/governance/reports/user-activity` - User activity report
- `GET /api/v1/governance/reports/security-events` - Security events report
- `GET /api/v1/governance/reports/compliance-status` - Compliance status report
- `GET /api/v1/governance/reports/risk-overview` - Risk overview report
### Monitoring (1 endpoint)
- `GET /metrics` - Prometheus metrics
**Total: 50+ API endpoints**
## 🔄 Future Enhancements

View File

@@ -1,35 +1,71 @@
# IAM Service Implementation Summary
# IAM Service Implementation Details
> **Note**: This document consolidates implementation details, completion status, and architecture overview.
> For migration guide, see [IAM Migration Guide](../../docs/en/guides/iam-migration.md)
> For architecture proposal, see [IAM Proposal](../../docs/en/architecture/iam-proposal.md)
## ✅ Completed Features
## Table of Contents
- [Overview](#overview)
- [Completed Features](#completed-features)
- [Identity Management Implementation](#identity-management-implementation)
- [Access Management Implementation](#access-management-implementation)
- [Governance & Compliance Implementation](#governance--compliance-implementation)
- [Database Schema (30+ Models)](#database-schema-30-models)
- [Module Dependencies](#module-dependencies)
- [Configuration](#configuration)
- [Next Steps](#next-steps)
---
## Overview
The IAM Service is a comprehensive Identity and Access Management platform with **50+ API endpoints** across **10 feature modules** and **30+ database models**. This document details the implementation of all major features.
### Implementation Statistics
| Category | Count | Status |
|----------|-------|--------|
| **API Endpoints** | 50+ | ✅ Complete |
| **Database Models** | 30+ | ✅ Complete |
| **Feature Modules** | 10 | ✅ Complete |
| **Authentication Methods** | 7 | ✅ Complete |
| **Compliance Frameworks** | 4 | ✅ Complete |
---
## Completed Features
### 1. Core Infrastructure
- ✅ Multi-layer caching (Memory → Redis)
- ✅ Database schema với Prisma (RBAC, Social, Sessions, MFA)
- ✅ Multi-layer caching (Memory → Redis → PostgreSQL)
- ✅ Database schema với Prisma (30+ models)
- ✅ Event sourcing cho audit logs
- ✅ Zero-trust security middleware
- ✅ Connection pooling
- ✅ Repository pattern implementation
### 2. Authentication
- ✅ User registration với password hashing
- ✅ Login với JWT tokens
- ✅ User registration với password hashing (bcrypt, cost 12)
- ✅ Login với JWT tokens (15min access, 7day refresh)
- ✅ Logout với session revocation
- ✅ Token refresh mechanism
- ✅ Secure cookie management
- ✅ Token refresh mechanism với rotation
- ✅ Secure cookie management (HttpOnly, SameSite)
- ✅ Password change functionality
### 3. RBAC (Role-Based Access Control)
- ✅ Roles và Permissions system
- ✅ User-Role assignments với expiration
- ✅ Direct user permissions (override roles)
-Permission caching
-Group-based permissions
- ✅ Permission caching (5min TTL)
- ✅ RBAC middleware
### 4. ABAC (Attribute-Based Access Control)
- ✅ Policy engine với JSON logic
- ✅ Policy evaluation
- ✅ Policy evaluation với priority
- ✅ Time-based access control
- ✅ Location-based access control
- ✅ Attribute-based conditions
### 5. Social Authentication
- ✅ Google OAuth 2.0
@@ -37,10 +73,11 @@
- ✅ GitHub OAuth
- ✅ Circuit breaker cho external APIs
- ✅ Account linking
- ✅ State token CSRF protection
### 6. OIDC (OpenID Connect)
- ✅ OIDC Provider implementation
- ✅ Discovery endpoint
- ✅ Discovery endpoint (`/.well-known/openid-configuration`)
- ✅ Authorization code flow
- ✅ Token endpoint
- ✅ UserInfo endpoint
@@ -52,31 +89,36 @@
- ✅ QR code generation
- ✅ MFA device management
- ✅ MFA verification
- ✅ Backup codes generation
- ✅ Multiple devices per user
### 8. Session Management
- ✅ Distributed sessions
- ✅ Device fingerprinting
- ✅ Session expiration
- ✅ Session revocation
- ✅ Session revocation (single/all)
- ✅ Multiple device support
- ✅ IP address tracking
### 9. Security Features
- ✅ Zero-trust validation
- ✅ CSRF protection
- ✅ Dynamic rate limiting (based on roles)
- ✅ Dynamic rate limiting (based on roles: 50-1000 req/15min)
- ✅ Device fingerprinting
- ✅ Audit logging
- ✅ Audit logging (event sourcing)
- ✅ Input validation (Zod schemas)
### 10. API Endpoints
#### Authentication
#### Authentication (5 endpoints)
- `POST /api/v1/auth/register` - Register new user
- `POST /api/v1/auth/login` - Login user
- `POST /api/v1/auth/logout` - Logout user
- `POST /api/v1/auth/refresh` - Refresh access token
- `GET /api/v1/auth/me` - Get current user
- `POST /api/v1/auth/change-password` - Change password
#### Social Auth
#### Social Auth (6 endpoints)
- `GET /api/v1/auth/google` - Initiate Google OAuth
- `GET /api/v1/auth/google/callback` - Google callback
- `GET /api/v1/auth/facebook` - Initiate Facebook OAuth
@@ -84,66 +126,714 @@
- `GET /api/v1/auth/github` - Initiate GitHub OAuth
- `GET /api/v1/auth/github/callback` - GitHub callback
#### OIDC
#### OIDC (5 endpoints)
- `GET /.well-known/openid-configuration` - Discovery
- `GET /api/v1/oidc/authorize` - Authorization
- `POST /api/v1/oidc/token` - Token exchange
- `GET /api/v1/oidc/userinfo` - User info
- `GET /api/v1/oidc/jwks` - JWKS
#### RBAC
#### RBAC (4 endpoints)
- `GET /api/v1/rbac/permissions` - Get user permissions
- `POST /api/v1/rbac/roles/assign` - Assign role
- `POST /api/v1/rbac/roles/revoke` - Revoke role
- `POST /api/v1/rbac/permissions/grant` - Grant permission
- `GET /api/v1/rbac/permissions/check` - Check permission
#### MFA
#### MFA (5 endpoints)
- `POST /api/v1/mfa/totp/enable` - Enable TOTP
- `POST /api/v1/mfa/totp/verify` - Verify and enable TOTP
- `POST /api/v1/mfa/totp/validate` - Validate TOTP token
- `POST /api/v1/mfa/disable` - Disable MFA
- `GET /api/v1/mfa/devices` - Get MFA devices
## 📋 Database Schema
#### Session Management (3 endpoints)
- `GET /api/v1/sessions` - Get user sessions
- `DELETE /api/v1/sessions/:sessionId` - Revoke session
- `DELETE /api/v1/sessions` - Revoke all sessions
### Models
- `User` - User accounts
- `Role` - RBAC roles
- `Permission` - Granular permissions
- `UserRole` - User-role assignments
- `RolePermission` - Role-permission mappings
- `UserPermission` - Direct user permissions
- `Session` - Active sessions
- `RefreshToken` - Refresh tokens
- `SocialAccount` - Social login accounts
- `MFADevice` - MFA devices
- `AuthEvent` - Audit events
- `Policy` - ABAC policies
---
## 🔧 Configuration
## Identity Management Implementation
### Overview
The Identity Management module provides comprehensive user lifecycle management, profile management, identity verification, and organizational structure support.
### Implementation Details
#### 1. User Management Service
**Location**: `src/modules/identity/user/user.service.ts`
**Features**:
- User CRUD operations
- User listing with filters (email, organization, status)
- User deactivation/reactivation
- Bulk user import/export (CSV)
- User search and pagination
- Permission-aware access control
**Key Methods**:
```typescript
- getUser(userId: string): Get user by ID with permissions
- listUsers(filters: UserFiltersDto): List users with pagination
- updateUser(userId: string, data: UpdateUserDto): Update user
- deleteUser(userId: string): Soft delete user
- deactivateUser(userId: string): Deactivate user account
- reactivateUser(userId: string): Reactivate user account
- bulkImportUsers(data: BulkImportUsersDto): Import users from CSV
- bulkExportUsers(filters: UserFiltersDto): Export users to CSV
```
**Endpoints** (8 endpoints):
- `GET /api/v1/identity/users` - List users
- `GET /api/v1/identity/users/:id` - Get user
- `PUT /api/v1/identity/users/:id` - Update user
- `DELETE /api/v1/identity/users/:id` - Delete user
- `POST /api/v1/identity/users/:id/deactivate` - Deactivate user
- `POST /api/v1/identity/users/:id/reactivate` - Reactivate user
- `POST /api/v1/identity/users/bulk-import` - Bulk import users
- `GET /api/v1/identity/users/bulk-export` - Bulk export users
#### 2. Profile Management Service
**Location**: `src/modules/identity/profile/profile.service.ts`
**Features**:
- Extended user profile information
- Custom fields support (JSON)
- Avatar upload/management
- User preferences storage
- Phone number verification integration
**Key Methods**:
```typescript
- getProfile(userId: string): Get user profile
- updateProfile(userId: string, data: UpdateUserProfileDto): Update profile
- uploadAvatar(userId: string, file: Express.Multer.File): Upload avatar
- deleteAvatar(userId: string): Delete avatar
```
**Endpoints** (4 endpoints):
- `GET /api/v1/identity/users/:id/profile` - Get profile
- `PUT /api/v1/identity/users/:id/profile` - Update profile
- `POST /api/v1/identity/users/:id/profile/avatar` - Upload avatar
- `DELETE /api/v1/identity/users/:id/profile/avatar` - Delete avatar
#### 3. Identity Verification Service
**Location**: `src/modules/identity/verification/verification.service.ts`
**Features**:
- Email verification with OTP tokens
- Phone verification with SMS OTP
- Document verification (future)
- Verification status tracking
- Token expiration management
**Key Methods**:
```typescript
- requestEmailVerification(userId: string): Request email verification
- verifyEmail(token: string): Verify email with token
- requestPhoneVerification(userId: string, phone: string): Request phone verification
- verifyPhone(token: string, code: string): Verify phone with OTP
- getVerificationStatus(verificationId: string): Get verification status
```
**Endpoints** (5 endpoints):
- `POST /api/v1/identity/verification/email/request` - Request email verification
- `POST /api/v1/identity/verification/email/verify` - Verify email
- `POST /api/v1/identity/verification/phone/request` - Request phone verification
- `POST /api/v1/identity/verification/phone/verify` - Verify phone
- `GET /api/v1/identity/verification/:id/status` - Get verification status
#### 4. Organization Service
**Location**: `src/modules/identity/organization/organization.service.ts`
**Features**:
- Multi-tenant organization support
- Hierarchical organization structure (parent-child)
- Organization settings (JSON)
- Domain-based organization identification
- User-organization relationships
**Key Methods**:
```typescript
- createOrganization(data: CreateOrganizationDto): Create organization
- getOrganization(orgId: string): Get organization
- updateOrganization(orgId: string, data: UpdateOrganizationDto): Update organization
- deleteOrganization(orgId: string): Delete organization
- getOrganizationUsers(orgId: string): Get users in organization
- listOrganizations(filters: OrganizationFiltersDto): List organizations
```
**Endpoints** (5 endpoints):
- `GET /api/v1/identity/organizations` - List organizations
- `POST /api/v1/identity/organizations` - Create organization
- `GET /api/v1/identity/organizations/:id` - Get organization
- `PUT /api/v1/identity/organizations/:id` - Update organization
- `DELETE /api/v1/identity/organizations/:id` - Delete organization
- `GET /api/v1/identity/organizations/:id/users` - Get organization users
#### 5. Group Service
**Location**: `src/modules/identity/group/group.service.ts`
**Features**:
- Organization-scoped groups
- Group membership management
- Group permissions inheritance
- Member roles within groups
- Group expiration support
**Key Methods**:
```typescript
- createGroup(organizationId: string, data: CreateGroupDto): Create group
- getGroup(groupId: string): Get group with members
- updateGroup(groupId: string, data: UpdateGroupDto): Update group
- deleteGroup(groupId: string): Delete group
- getGroupMembers(groupId: string): Get group members
- addGroupMember(groupId: string, userId: string, role?: string): Add member
- removeGroupMember(groupId: string, userId: string): Remove member
```
**Endpoints** (7 endpoints):
- `GET /api/v1/identity/organizations/:id/groups` - List groups
- `POST /api/v1/identity/organizations/:id/groups` - Create group
- `GET /api/v1/identity/groups/:id` - Get group
- `PUT /api/v1/identity/groups/:id` - Update group
- `DELETE /api/v1/identity/groups/:id` - Delete group
- `GET /api/v1/identity/groups/:id/members` - Get members
- `POST /api/v1/identity/groups/:id/members` - Add member
- `DELETE /api/v1/identity/groups/:id/members/:userId` - Remove member
### Identity Management Models
- **User**: Core user entity with email, password, MFA, organization
- **UserProfile**: Extended user information (name, phone, avatar, custom fields)
- **Organization**: Multi-tenant organizations with hierarchy
- **Group**: Organization-scoped user groups
- **GroupMember**: Group membership with roles
- **IdentityVerification**: Email/phone/document verification records
---
## Access Management Implementation
### Overview
The Access Management module provides access request workflows, access reviews, certification campaigns, and access analytics.
### Implementation Details
#### 1. Access Request Service
**Location**: `src/modules/access/request/request.service.ts`
**Features**:
- Access request creation and management
- Multi-person approval workflows
- Request status tracking (PENDING, APPROVED, REJECTED, EXPIRED, CANCELLED)
- Automatic expiration handling
- Integration with RBAC for permission granting
**Key Methods**:
```typescript
- createRequest(userId: string, data: CreateAccessRequestDto): Create access request
- getRequest(requestId: string): Get request details
- getUserRequests(userId: string): Get user's requests
- approveRequest(requestId: string, approverId: string, comments?: string): Approve request
- rejectRequest(requestId: string, approverId: string, comments?: string): Reject request
- cancelRequest(requestId: string, userId: string): Cancel request
```
**Endpoints** (6 endpoints):
- `GET /api/v1/access/requests` - List access requests
- `POST /api/v1/access/requests` - Create access request
- `GET /api/v1/access/requests/:id` - Get request
- `PUT /api/v1/access/requests/:id/approve` - Approve request
- `PUT /api/v1/access/requests/:id/reject` - Reject request
- `DELETE /api/v1/access/requests/:id` - Cancel request
**Workflow**:
1. User creates access request with resource, action, and reason
2. System identifies required approvers based on policy
3. Approvers review and approve/reject
4. On approval, permissions are granted via RBAC service
5. Request status updated and audit logged
#### 2. Access Review Service
**Location**: `src/modules/access/review/review.service.ts`
**Features**:
- Access certification campaigns
- Periodic and ad-hoc reviews
- Review item management
- Reviewer assignment
- Review completion tracking
**Key Methods**:
```typescript
- createReview(data: CreateAccessReviewDto, createdBy: string): Create review
- getReview(reviewId: string): Get review details
- startReview(reviewId: string): Start review campaign
- completeReview(reviewId: string): Complete review
- getReviewItems(reviewId: string): Get review items
- reviewItem(itemId: string, reviewerId: string, status: ReviewItemStatus, comments?: string): Review item
```
**Endpoints** (7 endpoints):
- `GET /api/v1/access/reviews` - List reviews
- `POST /api/v1/access/reviews` - Create review
- `GET /api/v1/access/reviews/:id` - Get review
- `POST /api/v1/access/reviews/:id/start` - Start review
- `POST /api/v1/access/reviews/:id/complete` - Complete review
- `GET /api/v1/access/reviews/:id/items` - Get review items
- `PUT /api/v1/access/reviews/:id/items/:itemId/review` - Review item
**Review Types**:
- **Periodic**: Scheduled reviews (quarterly, annual)
- **Ad-hoc**: On-demand reviews
- **Certification**: Compliance certification campaigns
#### 3. Access Analytics Service
**Location**: `src/modules/access/analytics/analytics.service.ts`
**Features**:
- Access usage analytics
- Permission usage tracking
- User access summaries
- Risk analysis and anomaly detection
- Access pattern reporting
**Key Methods**:
```typescript
- getUsageAnalytics(filters: AnalyticsFiltersDto): Get usage analytics
- getPermissionAnalytics(filters: AnalyticsFiltersDto): Get permission usage
- getUserAccessSummary(userId: string): Get user access summary
- getRiskAnalytics(filters: AnalyticsFiltersDto): Get risk analytics
```
**Endpoints** (4 endpoints):
- `GET /api/v1/access/analytics/usage` - Get usage analytics
- `GET /api/v1/access/analytics/permissions` - Get permission analytics
- `GET /api/v1/access/analytics/users/:id/summary` - Get user summary
- `GET /api/v1/access/analytics/risks` - Get risk analytics
### Access Management Models
- **AccessRequest**: Access request records with status and metadata
- **AccessRequestApprover**: Multi-person approval tracking
- **AccessReview**: Review campaign records
- **AccessReviewItem**: Individual items within reviews
---
## Governance & Compliance Implementation
### Overview
The Governance module provides compliance reporting (GDPR, SOC2, ISO27001, HIPAA), policy governance, risk management, and comprehensive reporting.
### Implementation Details
#### 1. Compliance Service
**Location**: `src/modules/governance/compliance/compliance.service.ts`
**Features**:
- GDPR compliance reporting
- SOC2 compliance reporting
- ISO27001 compliance reporting
- HIPAA compliance support
- Custom compliance frameworks
- Report generation and export
- Report publishing workflow
**Key Methods**:
```typescript
- generateReport(type: ComplianceType, periodStart: Date, periodEnd: Date, generatedBy: string): Generate report
- getReports(filters: ReportFiltersDto): List reports
- getReport(reportId: string): Get report details
- exportReport(reportId: string, format: 'json' | 'csv' | 'pdf'): Export report
- publishReport(reportId: string): Publish report
- generateGDPRReport(periodStart: Date, periodEnd: Date): Generate GDPR report
- generateSOC2Report(periodStart: Date, periodEnd: Date): Generate SOC2 report
- generateISO27001Report(periodStart: Date, periodEnd: Date): Generate ISO27001 report
```
**Endpoints** (5 endpoints):
- `GET /api/v1/governance/compliance/reports` - List reports
- `POST /api/v1/governance/compliance/reports/generate` - Generate report
- `GET /api/v1/governance/compliance/reports/:id` - Get report
- `GET /api/v1/governance/compliance/reports/:id/export` - Export report
- `POST /api/v1/governance/compliance/reports/:id/publish` - Publish report
**Compliance Frameworks**:
- **GDPR**: Data protection, right to access, right to deletion, consent tracking
- **SOC2**: Access controls, monitoring, incident response, change management
- **ISO27001**: Information security management, risk assessment, controls
- **HIPAA**: Healthcare data protection, access controls, audit trails
#### 2. Policy Governance Service
**Location**: `src/modules/governance/policy/policy-governance.service.ts`
**Features**:
- Policy template management
- Policy versioning
- Policy testing and validation
- Policy categories
- Template-based policy creation
**Key Methods**:
```typescript
- createTemplate(data: CreatePolicyTemplateDto): Create policy template
- getTemplates(category?: string): List templates
- getTemplateVersions(templateId: string): Get template versions
- testPolicy(data: TestPolicyDto): Test policy evaluation
```
**Endpoints** (4 endpoints):
- `GET /api/v1/governance/policies/templates` - List templates
- `POST /api/v1/governance/policies/templates` - Create template
- `GET /api/v1/governance/policies/:id/versions` - Get versions
- `POST /api/v1/governance/policies/:id/test` - Test policy
#### 3. Risk Management Service
**Location**: `src/modules/governance/risk/risk.service.ts`
**Features**:
- User risk scoring (0-100)
- Risk level calculation (LOW, MEDIUM, HIGH, CRITICAL)
- Risk factor analysis
- Risk dashboard
- Risk score history
**Key Methods**:
```typescript
- calculateRiskScore(userId: string): Calculate user risk score
- getRiskScore(userId: string): Get current risk score
- getRiskScores(filters: RiskFiltersDto): List risk scores
- getRiskDashboard(): Get risk dashboard data
```
**Endpoints** (4 endpoints):
- `GET /api/v1/governance/risk/scores` - List risk scores
- `GET /api/v1/governance/risk/scores/:userId` - Get user risk score
- `POST /api/v1/governance/risk/calculate` - Calculate risk
- `GET /api/v1/governance/risk/dashboard` - Get risk dashboard
**Risk Factors**:
- Failed login attempts
- Unusual location access
- New device detection
- High privilege access patterns
- Inactivity periods
- Open access requests
- Permission changes
#### 4. Reporting Service
**Location**: `src/modules/governance/reporting/reporting.service.ts`
**Features**:
- Access summary reports
- User activity reports
- Security event reports
- Compliance status reports
- Risk overview reports
**Key Methods**:
```typescript
- getAccessSummary(filters: ReportFiltersDto): Get access summary
- getUserActivity(filters: ReportFiltersDto): Get user activity
- getSecurityEvents(filters: ReportFiltersDto): Get security events
- getComplianceStatus(): Get compliance status
- getRiskOverview(): Get risk overview
```
**Endpoints** (5 endpoints):
- `GET /api/v1/governance/reports/access-summary` - Access summary
- `GET /api/v1/governance/reports/user-activity` - User activity
- `GET /api/v1/governance/reports/security-events` - Security events
- `GET /api/v1/governance/reports/compliance-status` - Compliance status
- `GET /api/v1/governance/reports/risk-overview` - Risk overview
### Governance Models
- **ComplianceReport**: Compliance report records with type, period, status, and data
- **PolicyTemplate**: Reusable policy templates with versioning
- **RiskScore**: User risk scores with factors and levels
---
## Database Schema (30+ Models)
### Model Categories
#### 1. Core Authentication (7 models)
| Model | Purpose | Key Fields |
|-------|---------|------------|
| **User** | Core user entity | id, email, username, passwordHash, isActive, mfaEnabled, organizationId |
| **Session** | Active user sessions | id, userId, deviceId, deviceName, ipAddress, fingerprint, expiresAt |
| **RefreshToken** | Long-lived refresh tokens | id, userId, token, family, deviceId, expiresAt, revokedAt |
| **AuthEvent** | Audit log events | id, userId, eventType, eventData, ipAddress, success, timestamp |
| **SocialAccount** | OAuth provider accounts | id, userId, provider, providerId, email, accessToken, refreshToken |
| **MFADevice** | MFA devices | id, userId, type, name, secret, credentialId, isActive |
| **Policy** | ABAC policies | id, name, resource, condition, effect, priority, organizationId |
#### 2. Authorization (6 models)
| Model | Purpose | Key Fields |
|-------|---------|------------|
| **Role** | RBAC roles | id, name, displayName, description, isSystem |
| **Permission** | Granular permissions | id, resource, action, scope, description |
| **UserRole** | User-role assignments | id, userId, roleId, grantedBy, expiresAt |
| **RolePermission** | Role-permission mappings | id, roleId, permissionId |
| **UserPermission** | Direct user permissions | id, userId, permissionId, granted, grantedBy, expiresAt |
| **GroupPermission** | Group permissions | id, groupId, permissionId |
#### 3. Identity Management (6 models)
| Model | Purpose | Key Fields |
|-------|---------|------------|
| **Organization** | Multi-tenant organizations | id, name, domain, parentId, settings, isActive |
| **Group** | User groups | id, name, organizationId, description, isActive |
| **GroupMember** | Group membership | id, userId, groupId, role, joinedAt, expiresAt |
| **UserProfile** | Extended user info | id, userId, firstName, lastName, phone, avatarUrl, customFields |
| **IdentityVerification** | Verification records | id, userId, type, status, method, token, verifiedAt |
#### 4. Access Management (4 models)
| Model | Purpose | Key Fields |
|-------|---------|------------|
| **AccessRequest** | Access requests | id, userId, resource, action, reason, status, requestedAt, reviewedAt |
| **AccessRequestApprover** | Approval tracking | id, requestId, approverId, status, comments, reviewedAt |
| **AccessReview** | Review campaigns | id, name, type, status, startDate, endDate, createdBy |
| **AccessReviewItem** | Review items | id, reviewId, userId, resource, access, status, reviewedBy |
#### 5. Governance (3 models)
| Model | Purpose | Key Fields |
|-------|---------|------------|
| **ComplianceReport** | Compliance reports | id, type, name, periodStart, periodEnd, status, data, generatedAt |
| **PolicyTemplate** | Policy templates | id, name, category, description, content, version, isActive |
| **RiskScore** | Risk scores | id, userId, score, level, factors, calculatedAt |
#### 6. Additional Models (4+ models)
Additional models may include:
- Audit trail models
- Configuration models
- Feature flag models
- Integration models
### Total: 30+ Models
**Key Relationships**:
- User (1) → (*) UserRole → (*) Role → (*) RolePermission → (*) Permission
- User (1) → (*) UserPermission → (*) Permission
- User (1) → (1) UserProfile
- User (1) → (*) Session
- User (1) → (*) AccessRequest
- Organization (1) → (*) User
- Organization (1) → (*) Group → (*) GroupMember → (*) User
- Group (1) → (*) GroupPermission → (*) Permission
---
## Module Dependencies
### Architecture Layers
```
┌─────────────────────────────────────────┐
│ Presentation Layer (Routes) │
│ 50+ API Endpoints │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Business Logic Layer (Modules) │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Auth │ │ Identity │ │
│ │ Token │ │ Profile │ │
│ │ Session │ │ Org │ │
│ │ RBAC │ │ Group │ │
│ │ Social │ │ Verify │ │
│ │ OIDC │ │ │ │
│ │ MFA │ │ │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Access │ │ Governance │ │
│ │ Request │ │ Compliance │ │
│ │ Review │ │ Policy │ │
│ │ Analytics │ │ Risk │ │
│ │ │ │ Reporting │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Core Services Layer │
│ Cache │ Audit │ Security │ Feature │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Data Access Layer (Repositories) │
│ Prisma ORM │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Infrastructure Layer │
│ PostgreSQL │ Redis │
└─────────────────────────────────────────┘
```
### Module Dependencies
**Identity Module** depends on:
- RBAC Module (for permission checks)
- Cache Service (for user data caching)
- Audit Service (for audit logging)
- Organization Module (for organization context)
- Group Module (for group membership)
**Access Module** depends on:
- RBAC Module (for permission granting/revoking)
- Identity Module (for user information)
- Audit Service (for request/review logging)
- Analytics Module (for usage tracking)
**Governance Module** depends on:
- RBAC Module (for access data)
- Identity Module (for user data)
- Access Module (for access history)
- Audit Service (for compliance data)
**All Modules** depend on:
- Cache Service (multi-layer caching)
- Audit Service (event sourcing)
- Security Service (encryption, hashing)
- Repository Layer (data access)
---
## Configuration
### Environment Variables
See `env.local.example` for all required environment variables.
### Key Configurations
- JWT secrets (access, refresh, ID tokens)
- OAuth client IDs and secrets
- Database connection
- Redis connection
- OIDC issuer URL
## 🚀 Next Steps (Future Enhancements)
#### Database
- `DATABASE_URL`: PostgreSQL connection string
- `DATABASE_POOL_SIZE`: Connection pool size (default: 10)
- `DATABASE_TIMEOUT`: Query timeout in ms (default: 30000)
1. **Database Sharding** - For 100M+ users
2. **Multi-region Deployment** - High availability
3. **WebAuthn** - Advanced MFA
4. **OIDC Multi-tenancy** - Enterprise customers
5. **Load Testing** - K6 tests for 50k req/s
6. **Advanced Monitoring** - Datadog, ELK stack
7. **Rate Limiting Refinement** - ML-based behavior analysis
#### Redis
- `REDIS_HOST`: Redis host
- `REDIS_PORT`: Redis port (default: 6379)
- `REDIS_PASSWORD`: Redis password (optional)
- `REDIS_TTL_DEFAULT`: Default TTL in seconds (default: 300)
## 📝 Notes
#### JWT
- `JWT_ACCESS_SECRET`: Access token secret
- `JWT_REFRESH_SECRET`: Refresh token secret
- `JWT_ID_SECRET`: ID token secret (OIDC)
- `JWT_ACCESS_EXPIRY`: Access token expiry (default: 15m)
- `JWT_REFRESH_EXPIRY`: Refresh token expiry (default: 7d)
#### OAuth
- `GOOGLE_CLIENT_ID`: Google OAuth client ID
- `GOOGLE_CLIENT_SECRET`: Google OAuth client secret
- `FACEBOOK_APP_ID`: Facebook OAuth app ID
- `FACEBOOK_APP_SECRET`: Facebook OAuth app secret
- `GITHUB_CLIENT_ID`: GitHub OAuth client ID
- `GITHUB_CLIENT_SECRET`: GitHub OAuth client secret
#### OIDC
- `OIDC_ISSUER_URL`: OIDC issuer URL
- `OIDC_AUTHORIZATION_ENDPOINT`: Authorization endpoint
- `OIDC_TOKEN_ENDPOINT`: Token endpoint
#### Security
- `BCRYPT_COST`: Bcrypt cost factor (default: 12)
- `RATE_LIMIT_ENABLED`: Enable rate limiting (default: true)
- `ZERO_TRUST_ENABLED`: Enable zero-trust validation (default: true)
#### Application
- `PORT`: Server port (default: 3001)
- `NODE_ENV`: Environment (development, staging, production)
- `API_VERSION`: API version (default: v1)
- `LOG_LEVEL`: Logging level (error, warn, info, debug)
### Cache Configuration
| Data Type | L1 TTL | L2 TTL | Invalidation Strategy |
|-----------|--------|--------|----------------------|
| User Data | 60s | 15min | On user update/delete |
| Permissions | 60s | 5min | On role/permission change |
| User Roles | 60s | 5min | On role assignment/revocation |
| Token Validation | N/A | Token lifetime | On logout/revocation |
| Sessions | N/A | Session lifetime | On logout |
| Rate Limit Counters | N/A | 15min window | Time-based expiry |
---
## Next Steps
### Short-term Enhancements (1-3 months)
1. **WebAuthn Support**: Implement FIDO2/WebAuthn for passwordless authentication
2. **Advanced Analytics**: Enhanced access analytics with ML-based anomaly detection
3. **Email/SMS Integration**: Integrate with email and SMS services for verification
4. **File Storage**: Integrate S3/GCS for avatar and document storage
5. **API Rate Limiting Refinement**: ML-based behavior analysis for dynamic limits
### Medium-term Enhancements (3-6 months)
1. **Multi-region Deployment**: High availability across regions
2. **Database Sharding**: Support for 100M+ users with sharding
3. **Advanced Compliance**: Additional compliance frameworks (PCI-DSS, FedRAMP)
4. **GraphQL API**: GraphQL endpoint for flexible queries
5. **Real-time Notifications**: WebSocket support for real-time updates
### Long-term Enhancements (6-12 months)
1. **Machine Learning**: ML-based risk scoring and anomaly detection
2. **Advanced Reporting**: Custom report builder with drag-and-drop
3. **Workflow Engine**: Custom workflow engine for access requests
4. **Integration Marketplace**: Pre-built integrations with common services
5. **Mobile SDKs**: Native iOS and Android SDKs
### Performance Optimizations
1. **Query Optimization**: Database query optimization and indexing
2. **Caching Strategy**: Enhanced caching with predictive pre-loading
3. **Connection Pooling**: Advanced connection pool management
4. **Load Testing**: K6 tests for 50k req/s throughput
5. **CDN Integration**: CDN for static assets and API responses
### Monitoring & Observability
1. **Advanced Monitoring**: Datadog, New Relic integration
2. **ELK Stack**: Centralized logging with ELK
3. **Distributed Tracing**: Enhanced Jaeger integration
4. **Custom Dashboards**: Grafana dashboards for all metrics
5. **Alerting**: Advanced alerting with PagerDuty integration
---
## Notes
- All code includes bilingual comments (EN/VI)
- Follows GoodGo project standards
@@ -151,3 +841,24 @@ See `env.local.example` for all required environment variables.
- Implements repository pattern
- Event sourcing for audit compliance
- Zero-trust security by default
- Comprehensive error handling
- Input validation with Zod schemas
- Rate limiting with Redis
- Multi-layer caching strategy
---
## Reference Files
- **Architecture**: [ARCHITECTURE.en.md](./ARCHITECTURE.en.md)
- **Data Model**: [DATA-MODEL.md](./concepts/DATA-MODEL.md)
- **Core Concepts**: [CORE-CONCEPTS.md](./concepts/CORE-CONCEPTS.md)
- **API Reference**: [API_REFERENCE.md](./API_REFERENCE.md)
- **Prisma Schema**: [prisma/schema.prisma](../prisma/schema.prisma)
- **Routes**: [src/routes/index.ts](../src/routes/index.ts)
---
**Last Updated**: January 2026
**Version**: 1.0.0
**Status**: Production Ready

View File

@@ -30,7 +30,7 @@ pnpm prisma:seed
pnpm dev
```
Service will start on `http://localhost:4000`
Service will start on `http://localhost:3001`
## 📝 Default Credentials
@@ -40,20 +40,21 @@ After seeding:
## 🔑 API Testing
### Register User
The IAM Service provides 50+ endpoints across 10 modules. Here are quick examples for the main modules:
### Authentication Module
```bash
curl -X POST http://localhost:4000/api/v1/auth/register \
curl -X POST http://localhost:3001/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "password123",
"username": "testuser"
"password": "SecurePass123!"
}'
```
### Login
```bash
curl -X POST http://localhost:4000/api/v1/auth/login \
curl -X POST http://localhost:3001/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "admin@goodgo.com",
@@ -63,16 +64,64 @@ curl -X POST http://localhost:4000/api/v1/auth/login \
### Get Current User
```bash
curl -X GET http://localhost:4000/api/v1/auth/me \
curl -X GET http://localhost:3001/api/v1/auth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
### Check Permissions
```bash
curl -X GET "http://localhost:4000/api/v1/rbac/permissions/check?resource=users&action=read&scope=all" \
curl -X GET "http://localhost:3001/api/v1/rbac/permissions/check?resource=users&action=read&scope=all" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
### Identity Management Module
Manage users, profiles, organizations, and groups:
```bash
# List users
curl -X GET http://localhost:3001/api/v1/identity/users \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Get user profile
curl -X GET http://localhost:3001/api/v1/identity/users/{userId}/profile \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
### Access Management Module
Handle access requests, reviews, and analytics:
```bash
# Create access request
curl -X POST http://localhost:3001/api/v1/access/requests \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"resource": "users",
"action": "write",
"scope": "all",
"reason": "Need access to manage users"
}'
# List access requests
curl -X GET http://localhost:3001/api/v1/access/requests \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
### Governance & Compliance Module
Compliance reporting, risk management, and policy templates:
```bash
# Get risk scores
curl -X GET http://localhost:3001/api/v1/governance/risk/scores \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# List compliance reports
curl -X GET http://localhost:3001/api/v1/governance/compliance/reports \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
**For complete API documentation, see [API Reference](API_REFERENCE.md).**
## 🔐 Social Login Setup
### Google OAuth
@@ -82,7 +131,7 @@ curl -X GET "http://localhost:4000/api/v1/rbac/permissions/check?resource=users&
```
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URI=http://localhost:4000/api/v1/auth/google/callback
GOOGLE_REDIRECT_URI=http://localhost:3001/api/v1/auth/google/callback
```
### Facebook OAuth
@@ -92,7 +141,7 @@ curl -X GET "http://localhost:4000/api/v1/rbac/permissions/check?resource=users&
```
FACEBOOK_APP_ID=your-app-id
FACEBOOK_APP_SECRET=your-app-secret
FACEBOOK_REDIRECT_URI=http://localhost:4000/api/v1/auth/facebook/callback
FACEBOOK_REDIRECT_URI=http://localhost:3001/api/v1/auth/facebook/callback
```
### GitHub OAuth
@@ -102,7 +151,7 @@ curl -X GET "http://localhost:4000/api/v1/rbac/permissions/check?resource=users&
```
GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret
GITHUB_REDIRECT_URI=http://localhost:4000/api/v1/auth/github/callback
GITHUB_REDIRECT_URI=http://localhost:3001/api/v1/auth/github/callback
```
## 🔒 MFA Setup