Keycloak 26.4.0 版本发布
Keycloak 26.4.0 现已发布,具体更新内容如下:
亮点
本次发布重点增强了安全性、深度集成和服务器管理,主要内容包括:
-
Passkeys 实现无密码无缝认证。
-
联邦客户端认证,支持使用 SPIFFE 或 Kubernetes 服务账号令牌进行客户端认证。
-
简化跨多个可用区的部署,提升可用性。
-
FAPI 2 正式版支持,包括安全配置文件和消息签名。
-
DPoP(OAuth 2.0 应用层证明持有者)全面支持,新增仅绑定刷新令牌和端点安全加固等功能。
安全与标准
Passkeys 集成(支持)
Passkeys 已无缝集成到 Keycloak 登录界面,支持条件式和模态 UI。启用方式:进入 Authentication → Policies → Webauthn Passwordless Policy,开启 Enable Passkeys。
FAPI 2 正式版(支持)
Keycloak 支持最新的 FAPI 2.0 规范,包括安全配置文件和消息签名,相关客户端策略通过 FAPI 合规测试。
新增客户端配置文件(fapi-2-dpop-security-profile 和 fapi-2-dpop-message-signing),支持使用 DPoP 的客户端,确保 FAPI 2 合规。
DPoP(支持)
Keycloak 支持 OAuth 2.0 的 DPoP,原为 23 版本预览功能,现全面支持并新增:
-
支持仅将刷新令牌绑定给公共客户端,访问令牌可不绑定。
-
所有使用 Bearer Token 的 Keycloak 端点现支持 DPoP,包括 Admin REST API 和 Account REST API。
-
可要求 OIDC 认证请求中必须带 dpop_jkt 参数。
感谢 Takashi Norimatsu 和 Dmitry Telegin 的贡献。
FIPS 140-2 模式新增 EdDSA 支持
升级到 Bouncy Castle 2.1.x 后,现支持 EdDSA 算法。
OAuth 标准一览
新增指南汇总所有已实现的 OpenID Connect 相关规范。
集成
联邦客户端认证(预览)
身份提供者现在支持联邦客户端认证,允许客户端使用 SPIFFE JWT SVID、Kubernetes 服务账号令牌或 OpenID Connect 令牌认证。
该功能为预览版,预计 26.5 版本正式支持。
SAML 客户端自动证书管理
SAML 客户端支持自动从 SP 实体元数据描述符下载签名和加密证书。配置方法:客户端设置 → 签名和加密 → 填入 Metadata descriptor URL 并启用 Use metadata descriptor URL。证书会自动下载并缓存,实现无缝证书轮换。
作为 MCP 授权服务器
MCP(Model Context Protocol)是连接 AI 应用与外部系统的开源标准。Keycloak 通过符合 RFC 8414 的 OAuth 2.0 授权服务器元数据 URI 支持 MCP 授权服务器功能。
最新 MCP 规范要求支持资源指示器,目前 Keycloak 尚未实现该功能。
管理
更新邮箱流程(支持)
用户现在可通过更安全一致的流程更新邮箱,更新前需重新认证并验证邮箱。
组织邮箱域可选
之前版本每个组织必须指定邮箱域,现改为可选。无域时,组织成员认证及资料验证时不受域限制。
账户控制台隐藏身份提供者
可通过“Show in Account console”设置控制账户控制台显示哪些身份提供者,支持只显示用户关联的或完全隐藏。
设置 OTP 后强制配置恢复码
启用 OTP 和恢复码作为二次认证时,可配置 OTP 必要操作,要求用户设置恢复码。
新增条件认证器
新增 Conditional - credential 认证器,检测认证过程中是否使用了特定凭据类型,关联 Passkeys 功能。默认浏览器流程新增该认证器,若用 Passkey 登录可跳过二次认证。
详情见条件流程[10]相关文档。
Weblate 管理的翻译
Keycloak 现包含 35 种社区翻译,本版本新增哈萨克语、阿塞拜疆语和斯洛文尼亚语。部分翻译由社区志愿者通过 Weblate 维护。
配置与运行
单集群与多集群部署增强
本版本将 multi-site 改名为 multi-cluster,文档更新介绍如何在一个区域内跨多个可用区分布 Keycloak 集群,提升可用性。Keycloak Operator 默认支持在 Kubernetes 集群内跨多个可用区部署,且能检测集群脑裂。
此改进提升运行在跨可用区 Kubernetes 集群中的 Keycloak 可用性。
新增数据库支持及版本
新增支持:
-
EnterpriseDB (EDB) Advanced 17.6
-
Azure SQL Database 和 Azure SQL Managed Instance
文档从“测试数据库版本”改为“支持数据库版本”。
管理接口支持 HTTP
之前管理端点只在主接口 HTTPS 时支持 HTTPS。
新增 http-management-scheme 选项,设置为 http 时管理接口使用 HTTP,方便无 TLS 客户端环境下监控。
主 HTTP(S) 端口暴露健康检查端点
启用 health-enabled 后,可将 http-management-health-enabled 设为 false,让健康检查端点暴露在主 HTTP(s) 端口。此时需在代理阻止外部访问 /health。
方便负载均衡器访问端点以正确分发流量。
Keycloak CR ingress 支持指定 tlsSecret
Operator 支持通过 Keycloak CR 的 spec.ingress.tlsSecret 字段指定 TLS Secret,实现基础 TLS 终端部署。
新增额外数据源配置(支持)
某些场景如用户联合需要连接额外数据库,之前只能通过不受支持的 Quarkus 原始属性实现。此版本新增专用服务器选项配置额外数据源,支持更友好。
可观测性
Operator 自动创建 ServiceMonitor
启用指标且 Kubernetes 集群有 monitoring.coreos.com/v1:ServiceMonitor CRD 时,Operator 会自动创建管理端点的 ServiceMonitor,并根据管理端点配置调整,确保指标能被抓取。
不需要时,可通过设置 spec.serviceMonitor.enabled: false 禁用。
HTTP 访问日志
Keycloak 支持记录 HTTP 请求访问日志,便于调试、安全审计及合规监控。
日志消息支持上下文信息(预览)
新增通过映射诊断上下文(MDC)向日志消息添加上下文信息,如请求的 realm 或客户端,有助定位日志中的警告或错误。
更多详情可查看官方公告。