Chuyển đến nội dung chính

第 1 課:介紹 Keycloak - 企業中的 IAM 與 SSO

了解什麼是 Keycloak、為什麼需要 IAM、核心概念(領域、客戶端、使用者、角色、群組、會話)、Quarkus 上的 Keycloak 架構、與 Auth0/Okta/Azure AD 的比較以及企業中的真實用例。 Keycloak 26.x 版本概述。

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 Overview

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 Architecture on Quarkus

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、監控)