Open-Source Identity and Access Management with Keycloak
原文来源:https://blog.miraclesoft.com/open-source-identity-and-access-management-with-keycloak/
作者:Jyotsna Dasari · 发布日期:2024年3月22日
主题:拥抱开源的身份与访问管理(IAM)——Keycloak
许可:Apache License 2.0
引言(Introduction)
Keycloak 是一款开源软件解决方案,为 Web 应用和服务提供单点登录(Single Sign-On,SSO) 功能和身份管理能力。它由 Red Hat 开发,采用 Apache License 2.0 许可。
借助 Keycloak,用户可以使用一套凭据访问多个应用和服务,而无需在每一个应用中都重复登录。它支持多种身份认证方式与技术,包括 OAuth 2.0、OpenID Connect(OIDC)、SAML 2.0 等。
除此之外,Keycloak 还提供以下 IAM 核心能力:
- 用户注册与自助服务(self-service)
- 多因素认证(MFA)
- 用户联邦(User Federation)
- 细粒度访问控制(granular access control)

为什么业务应用需要 Keycloak?
对于业务应用来说,Keycloak 提供了几项关键组件:
- 用户认证与授权
- 单点登录(SSO)能力
- 与外部身份提供者的身份联邦
- 细粒度访问控制
- 安全特性
- 面向开发者的友好集成方式
- 集中化管理

借助这些能力,企业可以:
- 保护自己的应用
- 让用户只需登录一次即可访问不同服务
- 与现有用户目录集成
- 强制执行细粒度访问控制
- 增强安全性
- 加速开发
- 简化管理工作
Keycloak 还提供了令牌管理与吊销等安全措施,用于防御潜在风险;同时提供集中化管理门户,可在多个应用间统一管理用户、角色与权限。
Keycloak 的实施步骤(Implementation)

以下是实施 Keycloak 的步骤:
- 下载 Keycloak —— 首先从官网下载 Keycloak 服务端
- 安装并运行 Keycloak —— 解压下载的文件并运行启动脚本完成安装
- 创建新的 Realm —— 启动后创建一个 realm(Realm 是用户、凭据和认证方式的分组容器),可通过「Add Realm」按钮创建
- 创建客户端(Client) —— Client 是一个需要 Keycloak 用户认证的 Web 应用或服务的逻辑表示。进入「Clients」页面并点击「Create」按钮创建
- 配置客户端 —— 创建后可配置认证流程、定义允许的回调 URI(redirect URIs),以及访问特定资源所需的职责与权限
- 设置用户认证 —— 最后一步定义用户登录必须经过的认证流程,比如设置多因素认证、接入社交登录提供者
- 验证配置 —— 通过登录客户端应用来测试 Keycloak 的认证与授权流程是否正常工作
优势(Advantages)
- 集中且健壮的用户认证与授权
业务应用可从 Keycloak 提供的安全认证与授权中受益。它支持 OpenID Connect、OAuth 2.0 等多种认证协议,让用户认证既简单又安全。 - 单点登录(SSO)简化用户体验
用户只需一套凭据即可登录所有应用和服务,无需记住多个用户名与密码。 - 多因素认证(MFA)
通过生物识别、一次性密码(OTP)等方式,为认证过程增加额外的安全层。 - 用户管理
提供用于管理用户、组和角色的系统,让管理员能够在多种应用与服务间统一管理用户访问与权限。 - 开源且可定制
Keycloak 是开源项目,可免费使用、修改和分发,也支持修改用户界面(UI)。 - 与外部身份提供者无缝集成
依托 Keycloak 对身份联邦的支持,企业可以对接 LDAP、Active Directory 等外部身份提供者,复用现有用户目录,消除重复的用户管理,同时提供跨应用的统一认证与访问控制。 - 细粒度访问控制
Keycloak 支持细粒度访问控制,企业可针对用户定义具体的角色、权限与访问策略,确保基于其角色与职责获得恰当的访问权限。
结论(Conclusion)
对于希望在安全、用户体验和管理效率上有所提升的企业而言,Keycloak 丰富的能力与特性极具价值。从认证与访问控制,到与其他身份提供者的无缝交互,Keycloak 都提供了安全且实用的解决方案。借助 Keycloak,企业可以有效地管理用户身份并保护应用,从而将精力集中在核心业务上。