发行注记
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 红帽构建的 Keycloak 22.0
1.1. 概述
红帽非常自信,引入一个名为 Red Hat build of Keycloak 的新身份和访问管理。红帽构建的 Keycloak 22.0 发行版本替换发布 Red Hat Single Sign-On 8.0 或更高版本的任何计划。
红帽 Keycloak 构建基于 Keycloak 项目,您可以通过根据常见标准(如 OpenID Connect、OAuth 2.0 和 SAML 2.0)提供 Web SSO 功能来保护 Web 应用程序。红帽构建的 Keycloak 服务器充当 OpenID Connect 或基于 SAML 的用户身份供应商(IdP),允许您的企业用户目录或第三方 IdP 使用基于标准的安全令牌来保护应用程序。
在保留 Red Hat Single Sign-on 的电源和功能时,Red Hat build of Keycloak 速度更快、更灵活且高效。红帽构建的 Keycloak 是一个使用 Quarkus 构建的应用程序,它为开发人员提供了灵活性和模块化性。Quarkus 提供了一个框架,针对容器优先方法进行了优化,并为开发云原生应用程序提供许多功能。
1.2. 22.0.13 的更新
此发行版本包括几个 已解决的问题 以及以下 CVE 的修复:
- CVE-2024-8698 Improper 验证 SAML 响应会导致红帽构建的 Keycloak 进行权限升级
- CVE-2024-8883 Vulnerable 重定向 URI 验证结果为 Open Redirect
1.3. 22.0.12 更新
此发行版本包括几个 已解决的问题 以及以下 CVE 的修复:
- CVE-2024-4629,攻击者可以并行启动多次登录尝试来绕过暴力保护。
- elytron SAML 适配器中的 CVE-2024-7341 会话修复,以更好地保护可能的 Cookie hijack。
- CVE-2024-5967 通过管理控制台了解配置的 LDAP 绑定凭据。可以通过适当的权限将 hostURL 更改为攻击者的机器。
1.4. 22.0.11 更新
此发行版本包含多个 固定的问题,包括 CVE-2024-4540 的修复。在这个版本中,存在一个使用 PAR (推送的授权请求)影响某些 OIDC 机密客户端的安全问题。如果您将 OIDC 机密客户端与 PAR 一起使用,且您基于在 HTTP 请求正文中的参数发送 client_id
和 client_secret
(在 OIDC 规格中指定的method client_secret_post
)使用客户端验证,则强烈建议您在升级到此版本后轮转客户端的客户端 secret。
1.5. 22.0.10 的更新
此版本包括几个固定的问题。详情请查看 修复的问题。
1.6. 22.0.9 的更新
此发行版本包括在 Windows 系统上安装的支持。对于 Windows 安装,您可以使用 kc.bat
命令而不是 kc.sh
命令。
此发行版本还包括 修复的问题。
1.7. 22.0.8 的更新
此发行版本包括 CVE-2023-6927 的修复。
此发行版本还包括 修复的问题。
1.8. 22.0.7 的更新
此版本包括几个固定的问题。详情请查看 修复的问题。
1.9. 新功能及功能增强
以下发行注记适用于红帽构建的 Keycloak 22.0。
1.9.1. 基于 Red Hat build of Quarkus 的新发布
红帽构建的 Keycloak 22.0 使用基于 Red Hat build of Quarkus 而不是 Red Hat JBoss Enterprise Application Platform 的简化发布模型。与 Red Hat Single Sign-On 相比,新发行版简化了配置和操作。
- 简单的配置流程以及交互式命令行帮助。您可以从多个配置源(如文件、CLI、环境变量或加密 KeyStore)中选择不透明和复杂的 XML 文件。
- 更快的启动时间和低内存占用。服务器分布比较小,容器镜像包含较少的依赖项,而红帽构建的 Keycloak 会执行多个优化,从而提高了运行时性能。
- 用于 PostgreSQL、MariaDB、SQL Server 和 MySQL 的 JDBC 驱动程序包含在分发中。
- 对问题进行更快的功能更新和修复。红帽构建的 Keycloak 生命周期与 Keycloak 密切一致,这意味着代码库更接近上游,使用创新升级可以更快地交付。
- 支持内置指标。
通过进行以下更改,为容器镜像提高安全性:
- 该镜像基于 UBI9 而不是 UBI8。
- 使用 -minimal 被 by-micro 替代。
1.9.2. 新 Operator
红帽构建的 Keycloak 22 引入了一个全新的 OpenShift Operator,它带有 reimagined 自定义资源(CR),以便在现代云原生环境中充分利用基于 Quarkus 的新发行版本。与 Red Hat Single Sign-On Operator 相比,生成的更改扩展了 Operator 的功能,并删除一些最突出的限制。
- 通过 Keycloak CR 支持 Red Hat build of Keycloak 服务器配置
- 使用裸机安装关闭配置 UX 配置,以简化 Operator 的使用
- 支持红帽构建 Keycloak 服务器的所有数据库
- 与 Red Hat Single Sign-On Operator Realm CR 中的几个选择字段相比,realm Import CR 支持完整 Realm 表示
1.9.3. 管理控制台 v2
管理控制台 v2 被重新设计,更易于使用且更易于访问。v2 控制台提供相同的功能,如创建客户端应用程序、管理用户和监控会话,但现在这些操作更容易执行。
1.9.3.1. 重新组织页面
管理控制台 v1 有许多页面填充了长的控制列表。您可以轻松地错过底部的高级功能。在 v2 控制台中,该页面类型被修改为将常规控制分组到一起,高级功能已移到自己的标签页。
控制被组织到高级和常规组中
1.9.3.2. 工具提示更易于使用
在 v1 控制台中,当您将鼠标悬停在字段上时,您需要设置的工具块字段。在 v2 控制台中,点问号(?)来显示工具提示。甚至专家用户也发现他们无法重新调用每个控制的含义,因此工具提示也很重要。
改进了工具提示不会隐藏字段名称
1.9.3.4. 可访问性增强
v2 控制台具有重大可访问性改进,可为具有可视化障碍的用户和使用屏幕阅读器的用户提供更好的用户体验。例如:
- 对于具有低远见度或颜色形象的用户,文本元素现在满足 WCAG 2 AA 对比比率阈值,从而明确与背景颜色相对应。
- 对于依赖屏幕阅读器的用户,表单元素包括标签,所有输入字段都有可访问的名称。另外,镜像现在具有其他文本。
- 对于交互式控制,每个集中元素现在都有一个活跃的、唯一的 ID,消除了混淆并辅助导航。
新的设计在流和机构中提供了很多改进,同时保持所有功能。但是,只有 bearer 的客户端是没有 OAuth 流的客户端有一个更改。在创建客户端时,这个访问类型不再是选择,但 bearer-only 交换机仍然存在于服务器端。如需了解更多详细信息 ,请参阅服务器管理指南。
1.9.4. FIPS 版本 140-2 支持
支持将红帽构建的 Keycloak 22.0 部署到启用了 FIPS 140-2 的环境中。详情请查看 FIPS 140-2。
1.9.5. OpenJDK 17 支持
Red Hat build of Keycloak 支持对服务器和适配器的 OpenJDK 17。
- 红帽构建的 Keycloak 服务器只在 OpenJDK 17 中被支持。
- 适配器只在 OpenJDK 11 和 17 上被支持。
1.9.6. 适配器支持
从红帽构建的 Keycloak 22 开始,以下 Java 客户端适配器不再发布:
- JBoss EAP 6
- JBoss EAP 7
- Spring Boot
- JBoss Fuse 6
- JBoss Fuse 7
与 OpenID Connect 的初始发行版本相比,这个协议现在广泛支持 Java 生态系统,通过利用技术堆栈中提供的功能来实现更好的互操作性和支持,如您的应用程序服务器或框架。
现在,这些功能已经达到其生命周期,且只在 Red Hat Single Sign-On 7.6 中提供。因此,在长期支持结束前,请考虑应用程序的备选功能。
每当您发现将红帽构建的 Keycloak 与 Red Hat Single Sign-On Client Adapters 集成的问题时,您会在管理控制台情况下在 Client Settings 中都有兼容模式设置。因此,您可以禁用红帽构建的 Keycloak 服务器的一些方面,以保持与旧客户端适配器的兼容性。有关各个设置的工具提示中提供了更多详细信息。
如需了解更多详细信息,请参阅 迁移指南。
1.9.7. 其他改进
Red Hat build of Keycloak 22.0 包括以下与 Red Hat Single Sign-On 7.6 相关的额外改进。
1.9.7.1. SAML 后备通道注销
红帽 Keycloak 22.0 构建包括 SAML SOAP Backchannel single-logout,它为红帽构建的 Keycloak 中注册的 SAML 客户端提供真实的后备频道注销功能。此功能添加了通过 SOAP 绑定接收 SAML 客户端发送的注销请求的功能。
1.9.7.2. OIDC 注销
Red Hat Single Sign-On 7.6 包括对 OIDC 注销的支持。红帽构建的 Keycloak 22.0 包括对 OIDC 注销的改进:
-
支持
client_id
参数,它基于 OIDC RP-Initiated Logout 1.0 规范。此功能可用于检测在无法使用id_token_hint
参数时,应该使用哪些客户端进行 Post Logout Redirect URI 验证。当在没有id_token_hint
参数的情况下只使用client_id
参数时,仍需要向用户显示 logout confirmation 屏幕,因此如果客户不希望向用户显示 logout 确认屏幕,则鼓励客户端使用id_token_hint
参数。 -
Valid Post Logout Redirect URIs
配置选项添加到 OIDC 客户端,并与 OIDC 规格一致。您可以使用不同的重定向 URI 在登录和注销后进行重定向。用于Valid Post Logout Redirect URI
的值+
表示注销使用与 选项Valid Redirect URI 指定的相同重定向 URI
集。由于向后兼容性,从之前的版本迁移时,这个更改也会与默认行为匹配。
如需了解更多详细信息,请参阅服务器管理指南中的 OIDC 注销。
1.9.7.3. 按属性搜索组
现在,您可以使用 Admin REST API 以类似于按属性搜索客户端搜索的方式根据属性搜索来搜索组。
1.9.7.4. 支持基于自定义属性的用户数
用户 API 现在支持根据自定义属性查询用户数量。/{realm}/users/count 端点包含一个新的 q
参数。它需要以下格式:
q=<name>:<value> <attribute-name>:<value>
1.9.7.5. 查看帐户控制台中的组成员资格
现在,您可以允许用户在帐户控制台中查看其组成员资格。用户必须具有 帐户 view-groups 选项,以便组在该控制台中显示。
1.9.7.6. OpenID Connect 身份提供程序中的基本声明配置
OpenID Connect 身份提供程序支持新配置,以指定身份提供程序发布的 ID 令牌必须具有特定的声明。否则,用户无法通过这个代理进行身份验证。
选项默认为禁用;启用后,您可以指定要过滤的 JWT 令牌声明的名称以及要匹配的值(支持正则表达式格式)。
1.9.7.7. 支持 OpenID Connect 身份提供程序中的 JWE 加密 ID 令牌和 UserInfo 响应
OpenID Connect 身份提供程序现在支持 ID Token 和 UserInfo 响应的 Json Web 加密(JWE)。供应商使用为所选加密算法定义的域密钥来执行解密。
1.9.7.8. 硬编码的组映射器
新的硬组映射器允许将特定组添加到从身份提供程序代理的用户。
1.9.7.9. 用户会话备注映射器
新的用户会话备注映射器允许将声明映射到用户会话备注。
1.9.7.10. LDAP 和 Kerberos 集成的改进
红帽构建的 Keycloak 支持域中多个 LDAP 供应商,它支持与同一 Kerberos 域的 Kerberos 集成。当 LDAP 供应商找不到通过 Kerberos/SPNEGO 进行身份验证的用户时,红帽构建的 Keycloak 会尝试回退到下一个 LDAP 供应商。当单个 LDAP 供应商支持多个 Kerberos 域时,红帽构建的 Keycloak 也会更好地支持它们,它们相互信任。
1.10. 技术预览功能和开发人员预览功能
红帽构建的 Keycloak 包括几个技术预览功能和开发人员预览功能。您非常谨慎,在生产环境中使用这些功能。它们默认是禁用的,可能会在以后的版本中更改或删除。有关技术预览功能和开发人员技术预览功能的详情,请参阅开发人员和技术预览功能。
红帽构建的 Keycloak 包括几个技术预览功能和开发人员预览功能。您非常谨慎,在生产环境中使用这些功能。它们默认是禁用的,可能会在以后的版本中更改或删除。有关技术预览功能和开发人员技术预览功能的详情,请参阅开发人员和技术预览功能。
存在以下技术预览功能。它们在 服务器管理指南 中进行了描述。
- 客户端 secret 轮转,通过缓解问题(如 secret 泄漏)来提高安全性
- 恢复代码,这是双因素身份验证的替代方法
- 用户配置文件配置,它使用声明性,并支持进度分析
- 脚本,使用 JavaScript 来编写自定义验证器的选项
- 更新电子邮件流,在更改电子邮件地址时支持用户
存在以下开发人员预览功能。开发者预览功能没有记录。
- 令牌交换,使用一组凭证或令牌来获取完全不同的令牌。这个功能之前是一个技术预览功能。
- 细粒度管理权限,它分配用于管理域的受限访问策略;此功能之前是技术预览功能。
- 映射存储,这是将域信息存储在其他数据库和存储的替代方法。
1.11. 删除和已弃用的功能
这些功能已被删除:
- JBoss EAP 6 和 7 OpenID Connect 适配器
- Spring Boot OpenID Connect 适配器
- Java Servlet Filter OpenID Connect adapter
- JBoss EAP 6 和 7 SAML 适配器
- 帐户控制台 v1
- 管理控制台 v1
- 将 OpenShift 3 内部 IdP 替换为红帽构建的 Keycloak 的技术预览
- Operator 的客户端和用户 CR (临时删除)。
- 旧的跨站点复制(以前称为技术预览功能)
- 弃用了应用到数据提供程序、用户会话供应商的方法。请参阅相应的替换,这些替换记录在 Javadoc 中。
此功能已弃用:
- 直接从红帽构建的 Keycloak JavaScript 适配器中载入红帽构建的 Keycloak JavaScript 适配器。
1.12. 修复的问题
每个发行版本都包括修复的问题:
1.13. 已知问题
版本包括以下已知问题:
- RHBK-721 - 在帐户控制台中添加自定义属性的说明无法正常工作
1.14. 支持的配置
有关红帽构建的 Keycloak 22.0 支持的配置,请参阅 支持的配置。
1.15. 组件详情
有关红帽构建的 Keycloak 22.0 支持的组件版本列表,请参阅 组件详情。