Keycloak 23.0.0 发布

2023 年 11 月 23 日

要下载该版本,请访问 Keycloak 下载

亮点

OpenID Connect / OAuth 2.0

FAPI 2 草案支持

Keycloak 具有新的客户端配置文件 fapi-2-security-profilefapi-2-message-signing,它们确保 Keycloak 在与您的客户端通信时,强制执行与最新 FAPI 2 草案规范的合规性。感谢 Takashi Norimatsu 的贡献。

DPoP 预览支持

Keycloak 提供对 OAuth 2.0 应用程序层证明所有权 (DPoP) 的预览支持。感谢 Takashi NorimatsuDmitry Telegin 的贡献。

自检终结点更加灵活

在以前版本中,自检终结点会自动返回访问令牌中可用的大多数声明。现在,大多数协议映射器上都有一个新的开关 添加到令牌自检。此新增功能提供了更大的灵活性,因为自检终结点可以返回与访问令牌不同的声明。这是“轻量级访问令牌”支持的第一步,因为访问令牌可以省略许多声明,这些声明仍将由自检终结点返回。从以前版本迁移时,自检终结点应返回与访问令牌返回相同的声明,因此在迁移后,默认情况下,行为应有效地保持相同。感谢 Shigeyuki Kabano 的贡献。

用于 OAuth 2.0 设备授权授予流程的功能标志

OAuth 2.0 设备授权授予流程现在包含一个功能标志,因此您可以轻松地禁用此功能。此功能默认情况下仍然启用。感谢 Thomas Darimont 的贡献。

身份验证

支持 Passkeys

Keycloak 提供对 Passkeys 的预览支持。

Passkey 注册和身份验证是通过 WebAuthn 的功能实现的。因此,Keycloak 用户可以通过现有的 WebAuthn 注册和身份验证来进行 Passkey 注册和身份验证。

同步的 Passkeys 和设备绑定的 Passkeys 都可用于相同设备和跨设备身份验证。但是,Passkeys 操作的成功与否取决于用户的环境。确保在 环境 中哪些操作可以成功。感谢 Takashi Norimatsu 的贡献,并感谢 Thomas Darimont 为此功能提供思路和测试帮助。

WebAuthn 增强功能

WebAuthn 策略现在包含一个新字段:Extra Origins。它提供了与非 Web 平台(例如,原生移动应用程序)的更好互操作性。感谢 Charley Wu 的贡献。

您已登录

曾经存在一个臭名昭著的问题,即当用户在多个浏览器选项卡中打开了登录页面并在其中一个选项卡中进行了身份验证时,尝试在后续浏览器选项卡中进行身份验证会打开页面 您已登录。这个问题现在得到了改进,因为在第一个浏览器选项卡进行身份验证后,其他浏览器选项卡也会自动进行身份验证。在某些情况下,行为可能并非 100% 正确,例如身份验证会话已过期,然后仅在一个浏览器选项卡中重新启动,因此其他浏览器选项卡不会自动进行登录。因此,我们仍然计划在这方面进行改进。

用于指定最大身份验证时间的密码策略

Keycloak 支持新的密码策略,允许指定密码在无需重新身份验证的情况下可以由用户更改的最大身份验证年龄。当此密码策略设置为 0 时,用户将需要重新身份验证才能在帐户控制台中或通过其他方式更改密码。您也可以指定低于或高于 5 分钟的默认值。感谢 Thomas Darimont 的贡献。

部署

对多站点主动-被动部署的预览支持

将 Keycloak 部署到多个独立站点对于某些环境至关重要,以便提供高可用性并快速从故障中恢复。此版本为 Keycloak 添加了主动-被动部署的预览支持。

已经投入了大量工作来测试和验证一个能够承受负载并从故障场景中恢复的设置。要开始使用,请使用高可用性指南,该指南还包括一个全面的蓝图,用于将高可用性 Keycloak 部署到云环境中。

适配器

OpenID Connect WildFly 和 JBoss EAP

以前版本中已弃用的 WildFly 和 JBoss EAP 的 OpenID Connect 适配器已在此版本中删除。它将被 WildFly 中包含的 Elytron OIDC 适配器替换,该适配器可无缝迁移自 Keycloak 适配器。

SAML WildFly 和 JBoss EAP

WildFly 和 JBoss EAP 的 SAML 适配器不再作为 ZIP 下载分发,而是作为 Galleon 功能包分发,使其更容易更无缝地安装。

有关详细信息,请参阅 保护应用程序和服务指南

服务器分发

支持负载削减

Keycloak 现在具有 http-max-queued-requests 选项,允许在高负载下适当地拒绝传入请求。有关详细信息,请参阅 生产指南

RESTEasy Reactive

Keycloak 已切换到 RESTEasy Reactive。即使不使用响应式样式/语义,使用 quarkus-resteasy-reactive 的应用程序仍应从更好的启动时间、运行时性能和内存占用中受益。直接依赖于 JAX-RS API 的 SPI 应与此更改兼容。依赖于 RESTEasy Classic(包括 ResteasyClientBuilder)的 SPI 将不兼容,需要更新,对于其他 JAX-RS API 实现(如 Jersey)也同样如此。

用户配置文件

声明式用户配置文件在此版本中仍然是预览功能,但我们正在努力将其提升为支持的功能。欢迎反馈。如果您发现任何问题或有任何改进建议,请随时创建 Github 问题,最好带有 area/user-profile 标签。还建议查看 升级指南,其中包含此版本的迁移更改,其中包含有关迁移的一些其他信息。

组可扩展性

针对具有大量组和子组的用例,对组搜索的性能进行了改进。有一些改进,允许对子组进行分页查找。感谢 Alice 的贡献。

主题

主题的本地化文件默认使用 UTF-8 编码

主题的消息属性文件现在使用 UTF-8 编码读取,并自动回退到 ISO-8859-1 编码。

有关详细信息,请参阅迁移指南。

存储

删除 Map Store

Map Store 是以前版本中的实验性功能。从该版本开始,它被删除,用户应继续使用当前的 JPA 存储。有关详细信息,请参阅迁移指南。

升级

升级前,请参阅 迁移指南,以获取完整的更改列表。

所有已解决的问题

新功能

增强功能

错误