1.什麼是Keycloak?
鑰匙斗篷是一個開源身分和存取管理 (IAM) 解決方案,最初由 Red Hat 開發,現在是CNCF孵化(雲端原生運算基金會)。 Keycloak 為 Web 系統和 RESTful Web 服務提供單一登入 (SSO)、身分識別管理和應用程式安全性。
Keycloak 的目標是讓安全性變得簡單——開發人員通常需要自己編寫的安全功能可以開箱即用,並且可以根據組織需求進行客製化。
發展歷程
2014:Keycloak 是作為 JBoss/Red Hat 專案而誕生的
2018:Keycloak 4.0 — 支援授權服務、UMA 2.0
2020:Keycloak.X(基於Quarkus)預覽
2022:Keycloak 20 - WildFly 發行版已刪除,正式切換到 Quarkus
2024: Keycloak 成為 CNCF 孵化項目
2026:Keycloak 26.5.x — 目前版本,支援工作流程、密碼、MCP
2. 為什麼需要身分和存取管理?
在現代企業系統中,身分和存取管理在以下情況下變得複雜:
許多應用程式需要通用身份驗證 (SSO)
需要與外部身分提供者(Google、Azure AD、LDAP)集成
需要多重身份驗證 (MFA) 以實現高安全性
複雜的權限管理(RBAC、ABAC、細粒度權限)
符合安全標準(OAuth 2.0、OIDC、SAML 2.0、FAPI 2.0)
SaaS 應用程式的多租戶
Keycloak IAM/SSO 概述:應用程式 → Keycloak → 身分提供者
3.Keycloak主要特點
單一登入 (SSO) 和單一登出對於瀏覽器應用程式
OpenID 連接和OAuth 2.0支援
SAML 2.0支援
身份經紀— 透過外部 OIDC 或 SAML 身分提供者進行身分驗證
社群登入— 使用 Google、GitHub、Facebook、Apple、Microsoft 登入
使用者聯盟— 同步 LDAP 和 Active Directory 中的用戶
Kerberos 橋— 自動驗證登入 Kerberos 伺服器的用戶
管理控制台— 使用者、角色、客戶端、設定的集中管理
帳戶控制台— 允許使用者管理自己的帳戶
主題支持— 自訂登入、帳戶、管理、電子郵件介面
雙重身份驗證— TOTP/HOTP、WebAuthn、金鑰
授權服務— 詳細的策略和權限授權
組織機構— CIAM 多租戶(B2B、B2B2C)
工作流程— 管理自動化(IGA)
代幣映射器— 自訂令牌中的聲明
事件與審計— 審計日誌記錄和事件監聽器
4. 核心概念
領域
Realm 管理一組使用者、憑證、角色和群組。每個使用者都屬於並登入一個領域。領域相互隔離-只有屬於該領域的使用者才能被管理和驗證。
客戶
客戶端是需要Keycloak對使用者進行身份驗證的實體(應用程式、服務)。客戶端可以是 Web 應用程式、行動應用程式、REST API 或需要令牌來呼叫其他服務的服務。
使用者
使用者是可以登入系統的實體。使用者俱有屬性(電子郵件、使用者名稱、電話等),屬於群組並被指派角色。
角色
角色決定使用者的類型或類別(管理員、使用者、經理)。該應用程式根據角色而不是單一使用者分配存取權限。
團體
群組管理用戶群組。組具有屬性和角色映射。使用者從群組繼承屬性和角色映射。
會議
當使用者登入時,會建立一個會話來管理登入會話,包括有關登入時間和參與 SSO 的應用程式的資訊。
5. Quarkus 上的 Keycloak 架構
從版本 20+ 開始,Keycloak 完全在 Quarkus 框架上運行,提供:
啟動時間極快— 適用於容器和無伺服器
記憶體佔用小- 針對雲端原生部署進行了最佳化
建置時優化— 預編譯配置
原生影像支援— 能夠原生運作 GraalVM
Keycloak 架構:Quarkus 執行時期、Infinispan 快取、Hibernate ORM、管理/帳戶控制台
| 成分 | 描述 |
|---|---|
| Quarkus 運作時 | 應用伺服器(取代WildFly) |
| 無限跨度 | 會話、令牌的分散式緩存 |
| 休眠 ORM | 用於資料庫持久化的 ORM 層 |
| 資料庫 | PostgreSQL(推薦)、MySQL、MariaDB、Oracle、MSSQL |
| 管理控制台 | 基於 React 的 SPA (PatternFly 5) |
| 帳戶控制台 | 基於 React 的 SPA,用於用戶自助服務 |
6. 比較 Keycloak、Auth0、Okta 和 Azure AD
| 標準 | 鑰匙斗篷 | 授權0 | 奧克塔 | Azure AD |
|---|---|---|---|---|
| 執照 | 阿帕契 2.0 (自由開源軟體) | 商業的 | 商業的 | 商業的 |
| 部署 | 自託管 | 雲端軟體即服務 | 雲端軟體即服務 | 雲端軟體即服務 |
| 費用 | 免費(自營) | 每月 35 美元起 | 從 2 美元/用戶/月起 | 從 $6 美元/用戶/月起 |
| 客製化 | 非常高(開源) | 中等的 | 中等的 | 短的 |
| OIDC/OAuth2 | 滿的 | 滿的 | 滿的 | 滿的 |
| SAML | 滿的 | 有 | 滿的 | 滿的 |
| LDAP/AD | 滿的 | 企業 | 滿的 | 本國的 |
| 藝術碩士 | TOTP、WebAuthn、金鑰 | 滿的 | 滿的 | 滿的 |
7. 實際用例
企業單一登入:所有內部應用程式的單一登入
客戶 IAM (CIAM):與組織管理客戶身份
API安全:使用 OAuth 2.0 令牌保護 REST API
微服務認證:使用客戶端憑證進行服務到服務身份驗證
社群登入:允許用戶使用Google、Facebook、GitHub登入
LDAP/AD 聯合:整合現有目錄系統
合規 MFA:符合 PCI-DSS、HIPAA、SOC 2 要求
八、課程概述
課程包括25節課分為7 部分,涵蓋所有 Keycloak 26.x 模組:
第 1 部分:平台(領域、使用者、群組、角色、權限)
第2部分:SSO 協定(OIDC、SAML、客戶端範圍、令牌、DPoP)
第三部分:身份驗證和 MFA(流程、OTP、WebAuthn、金鑰、身分代理)
第 4 部分:聯合和授權(LDAP/AD、組織、授權服務、工作流程)
第五部分:安全與客製化(主題、事件、強化、Vault)
第 6 部分:實際整合(Spring Boot、React/Angular、Node.js、API Gateway)
第7部分:生產營運(部署、HA、Kubernetes、監控)