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。
在升级之前,请参阅 迁移指南 以获取完整的更改列表。