2025 年 4 月 11 日
要下载此版本,请访问 Keycloak 下载。
在此版本中,我们添加了对标准令牌交换的支持!令牌交换功能已预览很长时间,因此我们很高兴最终支持标准令牌交换。目前,这仅限于将内部令牌交换为符合 令牌交换规范 的内部令牌。它尚未涵盖与身份代理或主体模拟相关的用例。我们希望在后续版本中支持更多令牌交换用例。
有关更多详细信息,请参阅 标准令牌交换。
有关如何从先前 Keycloak 版本中使用的旧版令牌交换升级的信息,请参阅 升级指南。
此版本引入了对新版本细粒度管理员权限的支持。版本 2 (V2) 提供了增强的灵活性和对域内管理访问的控制。借助此功能,管理员可以定义管理用户、组、客户端和角色的权限,而无需依赖广泛的管理员角色。V2 提供与先前版本相同级别的对域资源的访问控制,并计划在未来版本中扩展其功能。以下是一些要点:
集中式管理控制台管理 - 引入了新的权限部分,允许从单个位置进行管理,而无需导航到管理控制台中的不同位置。
改进的可管理性 - 管理员在为域资源构建权限模型时,可以更轻松地搜索和评估权限。
资源特定和全局权限 – 可以为单个资源(例如特定用户或组)或整个资源类型(例如所有用户或所有组)定义权限。
显式操作范围 – 权限现在是独立的,消除了操作之间的隐藏依赖关系。管理员必须显式分配每个范围,从而更容易查看授予的内容,而无需事先了解隐式关系。
按域启用 – 可以在每个域的基础上启用细粒度管理员权限,从而更好地控制采用和配置。
有关更多详细信息,请参阅 细粒度管理员权限。
有关迁移的更多信息,请参阅 升级指南。
Keycloak 故障排除仪表板 - 显示与服务级别指标和故障排除相关的指标。
Keycloak 容量规划仪表板 - 显示与估计 Keycloak 处理的负载相关的指标。
为了集群多个节点,Keycloak 使用分布式缓存。从此版本开始,对于所有基于 TCP 的传输堆栈,节点之间的通信都使用 TLS 加密,并使用自动生成的临时密钥和证书进行保护。
这加强了默认安全设置,并最大限度地减少了新设置的配置步骤。
有关更多信息,请查看分布式缓存指南中的 保护传输堆栈。
当使用优化或自定义镜像时,如果旧镜像和新镜像包含相同版本的 Keycloak,则 Keycloak Operator 现在可以为新镜像执行滚动更新。当您想要推出更新的主题或提供程序而无需停机时,这很有帮助。
要在 Operator 中使用此功能,请启用 Auto 更新策略,Keycloak Operator 将在镜像更改时短暂启动旧镜像和新镜像,以确定是否可以进行无停机的滚动更新。有关此功能的更多详细信息,请阅读 Keycloak Operator 高级配置指南中的 管理滚动更新 部分。
用于确定滚动更新是否可能的检查也可在 Keycloak 命令行上使用,因此您可以在部署管道中使用它们。继续阅读 更新兼容性工具 指南,了解有关命令行上可用功能的更多信息。
Admin Events API 现在除了之前的 yyyy-MM-dd 格式外,还支持基于 Epoc 时间戳过滤事件。这提供了对检索事件窗口更精细的控制。
还添加了 direction 查询参数,允许将返回项目的顺序控制为 asc 或 desc。过去,事件始终以 desc 顺序返回(最近的事件在前)。
最后,返回的事件表示现在还包括 id,它为事件提供了唯一标识符。
所有可用的日志处理程序现在都支持 ECS (Elastic Common Schema) JSON 格式。它有助于改进 Keycloak 的可观察性故事和集中式日志记录。
有关更多详细信息,请参阅 日志记录指南。
现在,证书吊销列表 (CRL),用于验证 X.509 身份验证器中的证书,缓存在名为 crl 的新 infinispan 缓存中。缓存提高了验证性能并减少了内存消耗,因为每个源仅维护一个 CRL。
查看 所有提供程序配置 指南中的 crl-storage 部分,了解新缓存提供程序的选项。
Keycloak Operator 现在默认创建 NetworkPolicy,以限制到用于 Keycloak 分布式缓存的内部端口的流量。
这加强了默认安全设置,并最大限度地减少了新设置的配置步骤。
您可以使用 Kubernetes NetworkPolicies 规则语法进一步限制对管理和 HTTP 端点的访问。
在 Operator 高级配置 中阅读有关此内容的更多信息。
可以设置 https-management-certificates-reload-period 选项来定义密钥库、信任库和证书文件的重新加载周期,这些文件由管理接口的 https-management-* 选项引用。使用 -1 禁用重新加载。默认为 https-certificates-reload-period,默认为 1 小时(一小时)。
有关更多信息,请查看 配置管理接口 指南。
OpenID Connect Core Specification 的最新版本收紧了客户端身份验证方法 private_key_jwt 和 client_secret_jwt 的 JWT 客户端断言中受众验证的规则。Keycloak 现在默认强制 JWT 令牌中用于客户端身份验证的受众为单个受众。
有关 Keycloak 版本中 JWT 客户端身份验证中更改的受众验证的信息,请参阅 升级指南。
非常感谢 Thomas Darimont 的贡献。
到目前为止,使用 User API 查询用户凭据不会返回用户存储提供程序管理的凭据,因此,也无法获取与联合凭据关联的其他元数据,例如上次凭据更新的时间。
在此版本中,我们向 org.keycloak.credential.CredentialInputUpdater 接口添加了一个新方法 getCredentials(RealmModel, UserModel),以便用户存储提供程序可以返回他们为域中特定用户管理的凭据。通过这样做,用户存储提供程序可以指示凭据是否链接到它,并提供其他元数据,以便在通过管理控制台管理用户时可以显示其他信息。
对于 LDAP,现在应该可以根据标准 pwdChangedTime 属性或(如果使用 Microsoft AD)基于 pwdLastSet 属性查看上次密码更新的时间。
为了检查凭据是本地的(由 Keycloak 管理)还是联合的,您可以检查 CredentialRepresentation 和 CredentialModel 类型中可用的 federationLink 属性。如果设置,则 federationLink 属性将保存与给定用户存储提供程序关联的组件模型的 UUID。
Keycloak 出站链接:为域配置电子邮件[SMTP 邮件配置] 现在支持令牌身份验证 (XOAUTH2)。许多服务提供商(Microsoft、Google)正在转向 SMTP OAuth 身份验证,并结束对基本身份验证的支持。令牌是使用客户端凭据授权收集的。
非常感谢 Sebastian Rose 的贡献。
添加了一个新的管理设置:客户端 → 高级 → 细粒度 OpenID Connect 配置 → 使用“at+jwt”作为访问令牌标头类型
如果启用,访问令牌将获得符合 rfc9068#section-2.1 的标头类型 at+jwt。否则,访问令牌标头类型将为 JWT。
此设置默认关闭。
非常感谢 Laurids Møller Jepsen 的贡献。
可验证凭据颁发的 OpenID (OID4VCI) 仍然是 Keycloak 中的实验性功能,但它得到了进一步的改进,尤其是 文档,其中包含如何尝试此功能的步骤。
您将在 Keycloak OAuth SIG 中找到重要的开发和讨论。欢迎 Keycloak 社区的任何人加入并提供反馈。
非常感谢 OAuth SIG 组的所有成员参与此功能的开发和讨论。特别感谢 Awambeng Rodrick 和 Ingrid Kamga。
在升级之前,请参阅 迁移指南 以获取完整的更改列表。