- Added new sections for Organization & Group APIs, User Profile APIs, and Identity Verification APIs in both English and Vietnamese documentation, reflecting the features introduced in Phase 2. - Revised the implementation roadmap to indicate the completion of Identity Management features, enhancing clarity on the current capabilities of the IAM Service. - Updated the Dependency Injection and DbContext to include new repositories and database tables for the added functionalities.
15 KiB
15 KiB
Đề Xuất Kiến Trúc IAM Service
Tài liệu này mô tả đề xuất kiến trúc cho IAM Service (Identity and Access Management Service), mở rộng từ auth-service hiện tại.
Tổng Quan: Auth Service → IAM Service
IAM Service cung cấp:
- OAuth2/OpenID Connect với Duende IdentityServer
- ASP.NET Core Identity cho user management
- Role-Based Access Control (RBAC)
- JWT Tokens (Access 15min, Refresh 7 days, RS256 signing)
- 2FA/MFA Support (TOTP với QR Code và Recovery Codes)
- Email Verification (Xác thực email qua SMTP)
- Social Login (Google, Facebook OAuth)
- Distributed Caching (Redis với ICacheService)
Note
IAM Service đã được triển khai với .NET 10, Clean Architecture, Duende IdentityServer tại
services/iam-service-net/
1. Phạm Vi IAM Service
1.1 Identity Management (Quản Lý Danh Tính)
A. User Lifecycle Management
- User CRUD operations
- User provisioning/deprovisioning workflows
- Bulk user operations (import/export)
- User deactivation/reactivation với approval workflow
- Account merging/deduplication
- User archival (soft delete với retention policy)
B. Profile Management
- Extended attributes (custom fields)
- Profile picture upload & management
- Contact information (phone, address)
- Preferences & settings
- Profile versioning/audit trail
C. Identity Verification
- Email verification
- Phone/SMS verification
- Identity document verification (KYC)
- Multi-level verification (verified, pending, rejected)
D. Organizations & Groups
- Organization management (multi-tenant)
- Group/Team management
- Organization hierarchy
- Group-based access control
- Organization-level policies
1.2 Access Management (Quản Lý Truy Cập)
A. Advanced Access Control
- Just-In-Time (JIT) access provisioning
- Privileged Access Management (PAM)
- Temporary access grants
- Access request/approval workflows
- Delegation & impersonation (admin view)
- Conditional access policies (location, time, device)
B. Access Reviews & Certifications
- Periodic access reviews
- Access certification campaigns
- Access analytics & reporting
- Risk scoring for access decisions
- Anomaly detection (unusual access patterns)
1.3 Governance & Compliance (Quản Trị & Tuân Thủ)
A. Audit & Logging
- Compliance reporting (GDPR, SOC2, ISO 27001)
- Data retention policies
- Audit log search & analytics
- Export audit logs
B. Policy Governance
- Policy versioning & rollback
- Policy templates library
- Policy testing & validation
- Policy compliance checks
C. Risk Management
- Risk scoring engine
- Risk-based authentication
- Threat detection
- Incident response workflows
- Security posture dashboard
2. Kiến Trúc Module Structure (Thực Tế)
services/iam-service-net/
├── src/
│ ├── IamService.API/ # Presentation Layer
│ │ ├── Controllers/ # AuthController, UsersController, RolesController
│ │ ├── Application/ # CQRS Commands, Queries, Handlers
│ │ │ ├── Commands/ # RegisterUserCommand, ChangePasswordCommand
│ │ │ ├── Queries/ # GetUserQuery, GetUsersQuery
│ │ │ └── Validators/ # FluentValidation validators
│ │ └── Program.cs # App entry point
│ ├── IamService.Domain/ # Domain Layer
│ │ ├── AggregatesModel/ # ApplicationUser, ApplicationRole
│ │ ├── Events/ # UserCreatedEvent, UserDeletedEvent
│ │ ├── Exceptions/ # UserNotFoundException, InvalidCredentialsException
│ │ └── SeedWork/ # Entity, IAggregateRoot, IRepository
│ └── IamService.Infrastructure/ # Infrastructure Layer
│ ├── IamServiceContext.cs # DbContext with Identity + OpenIddict
│ ├── Repositories/ # UserRepository, RoleRepository
│ └── Services/ # EmailService, TokenService
├── tests/
│ ├── IamService.UnitTests/
│ └── IamService.FunctionalTests/
├── docs/
├── Dockerfile
└── IamService.slnx
Sơ Đồ Kiến Trúc Clean Architecture
graph TD
%% Styling Configuration
classDef base fill:#202020,stroke:#505050,color:#fff,stroke-width:1px;
classDef core fill:#1a237e,stroke:#3949ab,color:#fff,stroke-width:1px;
classDef newModule fill:#1b5e20,stroke:#43a047,color:#fff,stroke-width:1px;
classDef database fill:#4a148c,stroke:#7b1fa2,color:#fff,stroke-width:1px;
%% Main Service Node
IAM[IAM Service]:::core
%% Identity Management Subgraph
subgraph Identity [Identity Management]
direction TB
User[User Lifecycle]:::newModule
Profile[Profile Mgmt]:::newModule
Verify[Verification]:::newModule
Org[Org & Groups]:::newModule
end
%% Access Management Subgraph
subgraph Access [Access Management]
direction TB
Req[Access Requests]:::newModule
Review[Access Reviews]:::newModule
PAM[PAM]:::newModule
Analytics[Analytics]:::newModule
end
%% Governance Subgraph
subgraph Governance [Governance & Compliance]
direction TB
Comp[Compliance]:::newModule
Policy[Policy Gov]:::newModule
Risk[Risk Mgmt]:::newModule
end
%% Database
DB[(Neon Database)]:::database
%% Relationships
IAM --> Identity
IAM --> Access
IAM --> Governance
Identity -.-> DB
Access -.-> DB
Governance -.-> DB
%% Internal Dependencies
Access --> Identity
Governance ---> Access
3. Database Schema Mở Rộng
3.1 Identity Management Models
- Organization: Quản lý tổ chức với hierarchy
- Group: Quản lý nhóm trong organization
- GroupMember: Thành viên của group
- GroupPermission: Permissions cho group
- UserProfile: Thông tin profile mở rộng của user
- IdentityVerification: Xác thực danh tính (email, phone, document)
3.2 Access Management Models
- AccessRequest: Yêu cầu truy cập
- AccessRequestApprover: Người phê duyệt request
- AccessReview: Đánh giá truy cập định kỳ
- AccessReviewItem: Item trong review
3.3 Governance Models
- ComplianceReport: Báo cáo tuân thủ (GDPR, SOC2, ISO27001)
- PolicyTemplate: Template cho policies
- RiskScore: Điểm rủi ro của user
4. API Endpoints (Thực Tế)
4.1 Authentication APIs
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
POST |
/api/v1/auth/register |
Đăng ký user mới | ❌ |
POST |
/connect/token |
OAuth2 token endpoint (login, refresh) | ❌ |
POST |
/api/v1/auth/change-password |
Đổi mật khẩu | ✅ |
POST |
/api/v1/auth/logout |
Đăng xuất (revoke tokens) | ✅ |
4.2 Email Verification APIs
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
POST |
/api/v1/auth/send-verification-email |
Gửi email xác thực | ✅ |
POST |
/api/v1/auth/confirm-email |
Xác nhận email với token | ❌ |
4.3 Xác Thực Hai Yếu Tố (2FA) APIs
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
POST |
/api/v1/auth/2fa/enable |
Bật 2FA (lấy QR code + recovery codes) | ✅ |
POST |
/api/v1/auth/2fa/verify |
Xác minh mã TOTP & kích hoạt | ✅ |
POST |
/api/v1/auth/2fa/disable |
Tắt 2FA | ✅ |
4.4 Social Login APIs
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
GET |
/api/v1/auth/external-login/{provider} |
Bắt đầu OAuth flow (Google/Facebook) | ❌ |
GET |
/api/v1/auth/external-callback |
Xử lý OAuth callback | ❌ |
GET |
/api/v1/auth/linked-accounts |
Lấy danh sách providers đã liên kết | ✅ |
4.5 User Management APIs
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
GET |
/api/v1/users |
Danh sách users (paginated) | ✅ |
GET |
/api/v1/users/me |
Thông tin user hiện tại | ✅ |
GET |
/api/v1/users/{id} |
Lấy user theo ID | ✅ |
PUT |
/api/v1/users/{id} |
Cập nhật user | ✅ |
DELETE |
/api/v1/users/{id} |
Xóa user (soft delete) | ✅ |
4.6 Role Management APIs
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
GET |
/api/v1/roles |
Danh sách roles | ✅ |
POST |
/api/v1/roles |
Tạo role mới | ✅ Admin |
PUT |
/api/v1/roles/{id} |
Cập nhật role | ✅ Admin |
DELETE |
/api/v1/roles/{id} |
Xóa role | ✅ Admin |
4.7 Organization & Group APIs ✅ (New in Phase 2)
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
GET |
/api/v1/organizations/{id} |
Lấy tổ chức theo ID | ✅ |
GET |
/api/v1/organizations/slug/{slug} |
Lấy tổ chức theo slug | ✅ |
POST |
/api/v1/organizations |
Tạo tổ chức mới | ✅ |
PUT |
/api/v1/organizations/{id} |
Cập nhật tổ chức | ✅ |
DELETE |
/api/v1/organizations/{id} |
Lưu trữ (archive) tổ chức | ✅ |
GET |
/api/v1/organizations/{id}/hierarchy |
Lấy phân cấp tổ chức | ✅ |
GET |
/api/v1/organizations/{id}/children |
Lấy tổ chức con | ✅ |
GET |
/api/v1/groups |
Danh sách groups theo organizationId | ✅ |
GET |
/api/v1/groups/{id} |
Lấy group theo ID | ✅ |
POST |
/api/v1/groups |
Tạo group mới | ✅ |
DELETE |
/api/v1/groups/{id} |
Xóa group (soft delete) | ✅ |
POST |
/api/v1/groups/{id}/members |
Thêm thành viên vào group | ✅ |
DELETE |
/api/v1/groups/{id}/members/{userId} |
Xóa thành viên khỏi group | ✅ |
4.8 User Profile APIs ✅ (New in Phase 2)
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
GET |
/api/v1/users/{id}/profile |
Lấy profile user | ✅ |
PUT |
/api/v1/users/{id}/profile |
Cập nhật profile user | ✅ |
PUT |
/api/v1/users/{id}/profile/attributes/{key} |
Đặt profile attribute | ✅ |
4.9 Identity Verification APIs ✅ (New in Phase 2)
| Method | Endpoint | Mô tả | Auth |
|---|---|---|---|
POST |
/api/v1/verifications/phone |
Yêu cầu xác thực số điện thoại | ✅ |
POST |
/api/v1/verifications/email |
Yêu cầu xác thực email | ✅ |
POST |
/api/v1/verifications/{id}/confirm |
Xác nhận với OTP code | ✅ |
4.10 Access Management APIs (Planned)
Note
Các APIs dưới đây là tính năng đang được lên kế hoạch, chưa triển khai.
# Access Requests
GET /api/v1/access/requests
POST /api/v1/access/requests
PUT /api/v1/access/requests/:id/approve
PUT /api/v1/access/requests/:id/reject
# Access Reviews
GET /api/v1/access/reviews
POST /api/v1/access/reviews
POST /api/v1/access/reviews/:id/start
POST /api/v1/access/reviews/:id/complete
GET /api/v1/access/reviews/:id/items
# Access Analytics
GET /api/v1/access/analytics/usage
GET /api/v1/access/analytics/permissions
GET /api/v1/access/analytics/risks
4.8 Governance APIs (Planned)
Note
Các APIs dưới đây là tính năng đang được lên kế hoạch, chưa triển khai.
# Compliance Reports
GET /api/v1/governance/compliance/reports
POST /api/v1/governance/compliance/reports/generate
GET /api/v1/governance/compliance/reports/:id/export
# Policy Governance
GET /api/v1/governance/policies/templates
POST /api/v1/governance/policies/templates
GET /api/v1/governance/policies/:id/versions
POST /api/v1/governance/policies/:id/test
# Risk Management
GET /api/v1/governance/risk/scores
GET /api/v1/governance/risk/scores/:userId
POST /api/v1/governance/risk/calculate
# Reporting
GET /api/v1/governance/reports/access-summary
GET /api/v1/governance/reports/user-activity
GET /api/v1/governance/reports/security-events
5. Implementation Roadmap
Phase 1: Foundation ✅ (Completed)
- ✅ Migrate từ auth-service sang iam-service (.NET 10 + Duende IdentityServer)
- ✅ CQRS với MediatR Pattern
- ✅ User Registration, Login, Logout
- ✅ Password Management (change-password)
- ✅ User Management APIs (CRUD)
- ✅ Role Management APIs
Phase 1.5: Enhanced Security ✅ (Completed)
- ✅ Email Verification (send + confirm)
- ✅ 2FA/MFA với TOTP (QR Code, Recovery Codes)
- ✅ Social Login (Google, Facebook OAuth)
- ✅ Distributed Caching với Redis (ICacheService)
- ✅ Token Blacklisting cho logout
Phase 2: Identity Management ✅ (Completed)
- ✅ User lifecycle management
- ✅ Identity verification (phone, email)
- ✅ Organization & Group management
- ✅ Profile management with extended attributes (ProfileAttribute entity)
Phase 3: Access Management (Planned)
- 🔄 Access request/approval workflows
- 🔄 Access review & certification system
- 🔄 Access analytics
- 🔄 Privileged Access Management (PAM)
Phase 4: Governance (Planned)
- 🔄 Compliance reporting engine
- 🔄 Policy governance & versioning
- 🔄 Risk scoring & management
- 🔄 Reporting dashboards
Phase 5: Advanced Features (Planned)
- 🔄 Workflow engine
- 🔄 Advanced analytics & ML-based insights
- 🔄 Integration APIs (SCIM, LDAP sync)
- 🔄 Performance optimization & scaling
6. Lợi Ích Của IAM Service
6.1 Cho Doanh Nghiệp
- ✅ Tuân thủ (GDPR, SOC2, ISO 27001)
- ✅ Quản lý rủi ro bảo mật tốt hơn
- ✅ Tự động hóa quy trình quản lý truy cập
- ✅ Báo cáo và audit trail đầy đủ
- ✅ Hỗ trợ multi-tenant/organization
6.2 Cho Developers
- ✅ API thống nhất cho identity & access
- ✅ Workflow engine linh hoạt
- ✅ Extensible architecture
- ✅ Comprehensive documentation
- ✅ SDK support
6.3 Cho End Users
- ✅ Self-service profile management
- ✅ Transparent access requests
- ✅ Better user experience
- ✅ Enhanced security với MFA & verification
Kết Luận
Đề xuất này mở rộng thành IAM Service với đầy đủ các tính năng:
- Identity Management đầy đủ
- Access Management nâng cao
- Governance & Compliance toàn diện
- Workflow automation linh hoạt
Điều này biến service từ authentication/authorization cơ bản thành một IAM platform toàn diện, phù hợp cho enterprise.
Quick Tips
Mermaid Common Issues
- Syntax Error: Kiểm tra kỹ các dấu ngoặc
[],{},()trong node label. - Connection: Đảm bảo các mũi tên
-->,-.->đúng cú pháp. - Indentation: Subgraph cần thụt đầu dòng đúng cách.
Color Pattern Reference
| Element | Fill Color | Stroke | Text | Usage |
|---|---|---|---|---|
| Base | #202020 |
#505050 |
#fff |
Node thông thường |
| Core | #1a237e |
#3949ab |
#fff |
Node trung tâm, quan trọng |
| Module | #1b5e20 |
#43a047 |
#fff |
Module, service con |
| DB | #4a148c |
#7b1fa2 |
#fff |
Database, storage |
| Warn | #b71c1c |
#f44336 |
#fff |
Cảnh báo, lỗi |
Visual Indicators
| Icon | Meaning |
|---|---|
| ✅ | Đã hoàn thành / Tốt |
| 🔄 | Đang xử lý / Thay đổi |
| ⚠️ | Cảnh báo / Lưu ý |
| ❌ | Lỗi / Không khuyến khích |