1. Keycloak là gì?
Keycloak là một giải pháp Identity and Access Management (IAM) mã nguồn mở, được phát triển ban đầu bởi Red Hat và hiện là dự án CNCF Incubation (Cloud Native Computing Foundation). Keycloak cung cấp Single Sign-On (SSO), quản lý danh tính, và bảo mật ứng dụng cho các hệ thống web và RESTful web services.
Mục tiêu của Keycloak là làm cho bảo mật trở nên đơn giản — các tính năng bảo mật mà developer thường phải tự viết được cung cấp sẵn và có thể tùy chỉnh theo yêu cầu tổ chức.
Lịch sử phát triển
2014: Keycloak ra đời như một dự án của JBoss/Red Hat
2018: Keycloak 4.0 — hỗ trợ Authorization Services, UMA 2.0
2020: Keycloak.X (Quarkus-based) preview
2022: Keycloak 20 — WildFly distribution bị loại bỏ, chính thức chuyển sang Quarkus
2024: Keycloak trở thành CNCF Incubation project
2026: Keycloak 26.5.x — phiên bản hiện tại với Workflows, Passkeys, MCP support
2. Tại sao cần Identity and Access Management?
Trong hệ thống enterprise hiện đại, việc quản lý danh tính và quyền truy cập trở nên phức tạp khi:
Nhiều ứng dụng cần xác thực chung (SSO)
Yêu cầu tích hợp với các Identity Provider bên ngoài (Google, Azure AD, LDAP)
Cần Multi-Factor Authentication (MFA) cho bảo mật cao
Quản lý phân quyền phức tạp (RBAC, ABAC, fine-grained permissions)
Tuân thủ các tiêu chuẩn bảo mật (OAuth 2.0, OIDC, SAML 2.0, FAPI 2.0)
Multi-tenancy cho SaaS applications
Tổng quan Keycloak IAM/SSO: Ứng dụng → Keycloak → Identity Providers
3. Các tính năng chính của Keycloak
Single Sign-On (SSO) và Single Sign-Out cho browser applications
OpenID Connect và OAuth 2.0 support
SAML 2.0 support
Identity Brokering — xác thực qua external OIDC hoặc SAML Identity Providers
Social Login — đăng nhập bằng Google, GitHub, Facebook, Apple, Microsoft
User Federation — đồng bộ users từ LDAP và Active Directory
Kerberos bridge — tự động xác thực users đã login vào Kerberos server
Admin Console — quản lý tập trung users, roles, clients, configuration
Account Console — cho phép users tự quản lý tài khoản
Theme support — tùy chỉnh giao diện login, account, admin, email
Two-factor Authentication — TOTP/HOTP, WebAuthn, Passkeys
Authorization Services — phân quyền chi tiết với policies và permissions
Organizations — multi-tenancy cho CIAM (B2B, B2B2C)
Workflows — tự động hóa quản trị (IGA)
Token Mappers — tùy chỉnh claims trong tokens
Events & Auditing — audit logging và event listeners
4. Các khái niệm cốt lõi
Realms
Realm quản lý một tập hợp users, credentials, roles và groups. Mỗi user thuộc về và đăng nhập vào một realm. Các realms được cô lập với nhau — chỉ có thể quản lý và xác thực users thuộc realm đó.
Clients
Clients là các entities (ứng dụng, services) yêu cầu Keycloak xác thực user. Clients có thể là web apps, mobile apps, REST APIs, hoặc services cần token để gọi các service khác.
Users
Users là các entities có thể đăng nhập vào hệ thống. Users có attributes (email, username, phone, etc.), thuộc groups và được gán roles.
Roles
Roles xác định loại hoặc category của user (Admin, User, Manager). Ứng dụng gán quyền truy cập dựa trên roles thay vì từng user riêng lẻ.
Groups
Groups quản lý nhóm users. Groups có attributes và role mappings. Users kế thừa attributes và role mappings từ group.
Sessions
Khi user đăng nhập, một session được tạo để quản lý login session, bao gồm thông tin về thời gian đăng nhập và các ứng dụng đã tham gia SSO.
5. Kiến trúc Keycloak trên Quarkus
Từ phiên bản 20+, Keycloak chạy hoàn toàn trên Quarkus framework, mang lại:
Startup time cực nhanh — phù hợp container và serverless
Memory footprint nhỏ — tối ưu cho cloud-native deployments
Build-time optimization — cấu hình được compile trước
Native image support — khả năng chạy GraalVM native
Kiến trúc Keycloak: Quarkus Runtime, Infinispan Cache, Hibernate ORM, Admin/Account Console
| Component | Mô tả |
|---|---|
| Quarkus Runtime | Application server (thay thế WildFly) |
| Infinispan | Distributed cache cho sessions, tokens |
| Hibernate ORM | ORM layer cho database persistence |
| Database | PostgreSQL (recommended), MySQL, MariaDB, Oracle, MSSQL |
| Admin Console | React-based SPA (PatternFly 5) |
| Account Console | React-based SPA cho user self-service |
6. So sánh Keycloak vs Auth0 vs Okta vs Azure AD
| Tiêu chí | Keycloak | Auth0 | Okta | Azure AD |
|---|---|---|---|---|
| License | Apache 2.0 (FOSS) | Commercial | Commercial | Commercial |
| Deployment | Self-hosted | Cloud SaaS | Cloud SaaS | Cloud SaaS |
| Chi phí | Miễn phí (tự vận hành) | Từ $35/tháng | Từ $2/user/tháng | Từ $6/user/tháng |
| Customization | Rất cao (open source) | Trung bình | Trung bình | Thấp |
| OIDC/OAuth2 | Đầy đủ | Đầy đủ | Đầy đủ | Đầy đủ |
| SAML | Đầy đủ | Có | Đầy đủ | Đầy đủ |
| LDAP/AD | Đầy đủ | Enterprise | Đầy đủ | Native |
| MFA | TOTP, WebAuthn, Passkeys | Đầy đủ | Đầy đủ | Đầy đủ |
7. Các use cases thực tế
Enterprise SSO: Đăng nhập một lần cho tất cả ứng dụng nội bộ
Customer IAM (CIAM): Quản lý danh tính khách hàng với Organizations
API Security: Bảo vệ REST APIs với OAuth 2.0 tokens
Microservices Authentication: Service-to-service authentication với client credentials
Social Login: Cho phép users đăng nhập bằng Google, Facebook, GitHub
LDAP/AD Federation: Tích hợp hệ thống directory hiện có
MFA cho Compliance: Đáp ứng yêu cầu PCI-DSS, HIPAA, SOC 2
8. Tổng quan khóa học
Khóa học gồm 25 bài học chia thành 7 phần, bao phủ toàn bộ các module của Keycloak 26.x:
Phần 1: Nền tảng (Realms, Users, Groups, Roles, Permissions)
Phần 2: SSO Protocols (OIDC, SAML, Client Scopes, Tokens, DPoP)
Phần 3: Authentication & MFA (Flows, OTP, WebAuthn, Passkeys, Identity Brokering)
Phần 4: Federation & Authorization (LDAP/AD, Organizations, Authorization Services, Workflows)
Phần 5: Security & Customization (Themes, Events, Hardening, Vault)
Phần 6: Tích hợp thực tế (Spring Boot, React/Angular, Node.js, API Gateway)
Phần 7: Production Operations (Deployment, HA, Kubernetes, Monitoring)