Keycloak 26.2.0 现已发布,具体更新内容如下:
亮点
支持标准令牌交换
新版本添加了对标准令牌交换的支持。目前,这仅限于交换内部令牌为符合令牌交换规范的内部令牌。它尚未涵盖与身份代理或主体模拟相关的用例。后续版本将支持更多的令牌交换用例。
支持细粒度管理员权限
此版本引入了对新版细粒度管理员权限的支持。版本 2(V2)为领域内的管理访问提供了增强的灵活性和控制。借助此功能,管理员可以为用户、组、客户端和角色定义权限,而无需依赖广泛的管理角色。V2 为领域资源提供了与以前版本相同级别的访问控制,并计划在未来版本中扩展其功能。以下是一些关键点:
- 集中式管理控制台管理 - 新的权限部分允许从单个位置进行管理,而无需导航到管理控制台的不同位置。
- 改进的管理能力 - 管理员可以更轻松地搜索和评估权限,以为领域资源构建权限模型。
- 资源特定和全局权限 - 可以为单个资源(例如特定用户或组)或整个资源类型(例如所有用户或所有组)定义权限。
- 显式操作范围 - 权限现在是独立的,消除了操作之间的隐藏依赖。管理员必须显式分配每个范围,使得在不需要先前了解隐式关系的情况下,更容易查看授予的内容。
- 按领域启用的细粒度管理员权限 - 可以按领域启用细粒度管理员权限,从而对采用和配置提供更大的控制。
指标和 Grafana 仪表盘指南
除了有用的指标名称列表外,Observability 指南类现在还包含一个关于如何在 Grafana 中显示这些指标的指南。该指南包含两个仪表盘。
-
Keycloak 故障排除仪表盘 - 显示与服务级别指标和故障排除相关的指标。
-
Keycloak 容量规划仪表盘 - 显示与估计 Keycloak 处理的负载相关的指标。
零配置安全集群通信
对于多个节点的集群,Keycloak 使用分布式缓存。从此版本开始,对于所有基于 TCP 的传输栈,节点之间的通信使用 TLS 进行加密,并使用自动生成的临时密钥和证书进行安全保护。
这加强了默认安全设置,并减少了新设置的配置步骤。
滚动更新优化和自定义镜像
使用优化或自定义镜像时,Keycloak Operator 现在可以使用新镜像执行滚动更新,如果旧镜像和新镜像包含相同版本的 Keycloak。这在你想要在不停机的情况下推出更新的主题或提供程序时非常有用。
要在此功能中使用 Operator,建议启用 Auto 更新策略,Keycloak Operator 将在镜像更改时启动旧镜像和新镜像,以确定是否可以在不停机的情况下进行滚动更新。
Admin Events API 中的附加查询参数
Admin Events API 现在支持按 Epoc 时间戳筛选事件,此外还支持以前的 yyyy-MM-dd 格式。这提供了对要检索的事件窗口的更细粒度控制。
还添加了一个方向查询参数,允许控制返回项目的顺序为 asc 或 desc。过去,事件始终按 desc 返回(最近的事件优先)。最后,返回的事件表示现在还包括 id,它为事件提供了一个唯一的标识符。
日志支持 ECS 格式
所有可用的日志处理程序现在都支持 ECS(Elastic Common Schema)JSON 格式。它有助于改善 Keycloak 的可观察性和集中式日志记录。
为 X.509 身份验证器加载的 CRL 的新缓存
现在,X.509 身份验证器中用于验证证书的证书吊销列表(CRL)缓存在一个名为 crl 的新 Infinispan 缓存中。缓存提高了验证性能并降低了内存消耗,因为每个源只需要维护一个 CRL。
Operator 创建 NetworkPolicies 以限制流量
Keycloak Operator 现在默认创建一个 NetworkPolicy,以限制对 Keycloak 分布式缓存使用的内部端口的访问。这加强了默认安全设置,并减少了新设置的配置步骤。
你可以使用 Kubernetes NetworkPolicies 规则语法进一步限制对管理和 HTTP 端点的访问。
管理接口的信任和密钥材料的重载选项
可以设置 https-management-certificates-reload-period 选项,以定义管理接口的密钥库、信任库和证书文件的重载周期。使用 -1 禁用重载。默认为 https-certificates-reload-period,默认为 1 小时。
使用客户端策略动态选择身份验证流程
引入了根据请求范围、ACR(身份验证上下文类引用)等条件动态选择身份验证流程的能力。这可以通过客户端策略实现,将新的 AuthenticationFlowSelectorExecutor 与新的 ACRCondition 等条件相结合。
JWT 客户端身份验证与最新的 OIDC 规范一致
最新的 OpenID Connect Core Specification 规范收紧了对 JWT 客户端断言中受众验证的规则,适用于客户端身份验证方法 private_key_jwt 和 client_secret_jwt。Keycloak 现在默认强制执行,在用于客户端身份验证的 JWT 令牌中,只能有一个受众。
获取用户凭证时,联邦凭证现已可用
到目前为止,使用用户 API 查询用户凭证将不会返回用户存储提供程序管理的凭证,因此无法获取与联邦凭证相关的附加元数据,例如凭证上次更新的时间。
在此版本中,项目团队在 org.keycloak.credential.CredentialInputUpdater 接口中添加了一个新的 getCredentials(RealmModel, UserModel) 方法,以便用户存储提供程序可以返回他们为领域中特定用户管理的凭证。这样,用户存储提供程序可以指示凭证是否与其链接,以及提供附加元数据,以便在管理控制台中管理用户时显示更多信息。
对于 LDAP,现在可以根据标准 pwdChangedTime 属性或使用 Microsoft AD 时基于 pwdLastSet 属性查看密码上次更新的时间。
要检查凭证是本地的(由 Keycloak 管理)还是联邦的,你可以检查 CredentialRepresentation 和 CredentialModel 类型中可用的 federationLink 属性。如果设置,federationLink 属性将包含与给定用户存储提供程序关联的组件模型的 UUID。
用于 SMTP 的基于令牌的身份验证(XOAUTH2)
Keycloak 出站链接:为领域配置电子邮件[SMTP 邮件配置]现在支持令牌身份验证(XOAUTH2)。许多服务提供商(Microsoft、Google)正在转向 SMTP OAuth 身份验证,并终止对基本身份验证的支持。该令牌是使用客户端凭证授予获取的。
访问令牌头类型的客户端新配置
添加了一个新的管理设置:客户端 → 高级 → 精细 OpenID Connect 配置 → 使用“at+jwt”作为访问令牌头类型如果启用,则访问令牌将获得头部类型 at+jwt,符合 rfc9068#section-2.1。否则,访问令牌头部类型将为 JWT。此设置默认关闭。
OpenID for Verifiable Credential Issuance 文档
OpenID for Verifiable Credential Issuance(OID4VCI)仍然是 Keycloak 中的一个实验性功能,但它得到了进一步的改进,特别是文档,介绍了如何尝试此功能。
更多详情可查看官方公告。
Downloads