搜索

第 2 章 特定于发行的更改

download PDF

在升级前仔细检查这些更改。

2.1. RH SSO 7.6

从 Red Hat Single Sign-On 7.5 到 Red Hat Single Sign-On 7.6 有以下更改。

2.1.1. 步骤验证

分步身份验证是一项新功能。此功能提供了 cr 客户端范围,它包含应当在令牌中添加 cr 声明的协议映射程序。现在,这个声明会被自动添加,而是使用这个客户端范围和协议映射程序。

客户端范围被添加为域"默认"客户端范围,因此将添加到所有新创建的客户端。出于性能考虑,在迁移期间,客户端范围不会自动添加到所有现有客户端。迁移后,客户端默认不会 具有cr 声明。考虑以下可能的操作:

  • 如果您没有计划使用步骤身份验证功能,但您依赖令牌中的 acr 声明,您可以禁用 step_up_authentication 功能,如 服务器安装和配置指南 中所述。在进行正常身份验证时,声明将加上值 1,在 SSO 身份验证时将加上值 0。
  • 通过 admin REST API 或 admin 控制台手动向客户端 添加 关键客户端范围。这在您想要使用步骤验证时才需要。如果您在域中有大量客户端,并希望为它们使用 cr 声明, 您可以针对您的 DB 触发一些类似于您的 DB 的 SQL。但是,如果已经启动 Red Hat Single Sign-On,请记住清除缓存或重启服务器:
insert into CLIENT_SCOPE_CLIENT (CLIENT_ID, SCOPE_ID, DEFAULT_SCOPE) select CLIENT.ID as CLIENT_ID, CLIENT_SCOPE.ID as SCOPE_ID, true as DEFAULT_SCOPE
from CLIENT_SCOPE, CLIENT where CLIENT_SCOPE.REALM_ID='test' and CLIENT_SCOPE.NAME='acr' and CLIENT.REALM_ID='test' and CLIENT.PROTOCOL='openid-connect';

2.1.2. OpenID Connect Logout

以前版本的 Red Hat Single Sign-On 支持自动注销用户,并通过打开注销端点 URL(如 http(s)://example-host/auth/realms/my-realm-name/protocol/openid-connect/logout?redirect_uri=encodedRedirectUri )来重定向到应用程序。虽然这种实施非常容易使用,但可能会对性能和安全性造成负面影响。根据 OpenID Connect RP-Initiated Logout 规格,新版本可以更好地支持注销。参数 redirect_uri 不再被支持;此外,新版本中,用户需要确认注销。当包含参数 post_logout_redirect_uri 和用于登录的 ID Token 时,可以省略确认并自动重定向到应用程序。

现有部署会受到以下方法影响:

  • 如果您的应用程序直接使用到使用 redirect_uri 参数进行注销端点的链接,您可能需要更改如上所述。请考虑可以完全删除 redirect_uri 参数,或使用 id_token_hintpost_logout_redirect_uri 参数替换。
  • 如果您使用 java 适配器,且应用程序会调用 httpServletRequest.logout() 进行注销,则您不受影响,因为这个调用使用了注销端点的 backchannel 变体,且没有更改。
  • 如果您使用最新的 javascript 适配器,您也不受影响。但是,如果您的应用程序使用 JavaScript 适配器的旧版本,您会受到影响,因为此适配器使用了已弃用的 redirect_uri 参数的注销端点变体。在这种情况下,您可能需要升级到 JavaScript 适配器的最新版本。
  • 对于 Node.js 适配器,与 JavaScript 适配器相同。建议您更新到最新版本,因为较老的适配器版本使用已弃用的 redirect_uri 参数。使用最新的 Node.js 适配器时,只要您根据 /logout URL 使用注销 URL 或 Node.js 适配器示例所述,您不会受到这个安全漏洞的影响。但是,当应用程序直接使用 method keycloak.logoutUrl 时,您可以考虑将 idTokenHint 添加为此方法的第二个参数。在这个版本中,在这个版本中添加了 idTokenHint 作为第二个参数。idTokenHint 需要是登录期间获得的有效 ID 令牌。添加 idTokenHint 是可选的,但如果省略它,则您需要确认注销屏幕,如前面所述。另外,在注销后,它们不会重定向到应用程序。

有一个后向兼容选项,它允许您的应用程序仍然使用 redirect_uri 参数的旧格式。

您可以通过在 standalone-*.xml 文件中包括以下配置来启用这个参数

<spi name="login-protocol">
    <provider name="openid-connect" enabled="true">
        <properties>
            <property name="legacy-logout-redirect-uri" value="true"/>
        </properties>
    </provider>
</spi>

使用这个配置,您仍然可以将格式与 redirect_uri 参数搭配使用。请注意,如果省略 id_token_hint,则需要确认屏幕。

警告

以后的一些版本中将删除后向兼容开关。建议您尽可能立即更新您的客户端,而不是依赖这个交换机。

2.1.3. 删除 upload-scripts 功能

以前版本的 Red Hat Single Sign-On 支持通过管理控制台和 REST API 等管理界面来管理 JavaScript 代码。从此版本开始,您现在应该将脚本部署到服务器,以配置以下供应商:

  • OpenID Connect Scriptmapper
  • 脚本身份验证器(身份验证执行)
  • JavaScript 策略

有关如何将脚本部署到服务器的详细信息,请参阅文档。请注意,要使用脚本,您仍需要启用 脚本 技术预览功能。

./standalone.sh -Dkeycloak.profile=preview

在部署脚本时,服务器将自动创建对应的供应商,以便您可以配置身份验证流程、映射程序和授权策略时选择它们。

通常,更新您的域的步骤如下:

  • 在升级前,删除您要使用的任何脚本供应商。
  • 升级后,请按照 文档 中的说明部署脚本。
  • 更新身份验证流程、映射程序和客户端授权设置,以使用从部署到服务器的脚本创建的提供程序。

2.1.4. 帐户控制台模式升级

Patternfly(PF)React 库已被更新,@patternfly/react-core 从 v3.153.3 升级到 v4.147.0, @patternfly/react-icons from v3.15.16,将 @patternfly/react-styles 从 v3.7.14 变为 v4.11.8。进行了几个 UI 更新,使帐户控制台与 PF 设计标准一致。

自定义开发的帐户 UI 可能会因为 PF 中的破坏更改而与这些更新不兼容。大多数有问题的更改应该通过更新 PF 组件来改变。

resources:

已知有破坏更改的组件:

  • 警报
  • action prop 改为 actionClose
  • 可扩展
  • 重命名为 ExpandableSection
  • 标题
  • 大小 attr 现在使用 TitleSizes
  • DataListContent
  • noPadding 更改为 具有NoPadding
  • Grid, Stack, Level, Gallery
  • gutter attr 更改为 hasGutter
  • 模态
  • 从中更改大小控制(例如,isLarge )以使用 ModalVariant,例如 ModalVariant ={ModalVariant.large}
  • 选择
  • ariaLabelTypeAhead to typeAheadAriaLabel
  • 正在展开为 "展开 "
  • ariaLabelledBy to aria-labelledby
  • DataListContent
  • NoPadding to hasNoPadding

2.1.5. 客户端策略迁移:客户端范围

如果您使用了策略,包括客户端范围条件并直接编辑的 JSON 文档,则需要在 JSON 文档中将 "scope" 字段名称更改为"scopes"。

2.1.6. Liquibase 升级到 4.6.2 版本

Liquibase 从 3.5.5 版本更新至 4.6.2,其中包括一些程序错误、一些程序错误修复以及使用 ServiceLoader 注册自定义扩展的新方法。

遵循 升级指南特别是在升级前备份现有数据库。虽然我们最好测试 Liquibase 升级的结果,但有些安装可能会对我们使用特定的设置未知。

2.1.7. Red Hat Single Sign-On Operator 中的已弃用的功能

在这个版本中,我们已在 Red Hat Single Sign-On Operator 的 Keycloak CR 中弃用了 podDisruptionBudget 字段。当 Operator 部署到 OCP 4.12 及更高版本中时,此可选字段将被忽略。

作为临时解决方案,您可以在集群中创建 Pod Disruption Budget,例如:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  labels:
    app: keycloak
  name: keycloak
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      component: keycloak

另请参阅 Kubernetes 文档

2.1.8. Red Hat Single Sign-On Operator 中的关键程序错误修复

由于之前版本的 Operator 中存在一个关键错误,RH-SSO StatefulSet 上的 Selector 字段配置错误。错误配置可能会破坏升级过程从 7.5 到 7.6,从而会阻止成功进行 RH-SSO 部署。

随着 Operator 补丁发行版本,我们引入了一个修复程序。请注意,作为修复 Operator 的一部分,在从 7.5 升级到 7.6 的过程中可能会 删除并重新创建 RH-SSO StatefulSet。要使修复正常工作,请确定您使用 重新创建 的升级策略。请参阅 服务器安装和配置指南中的相关章节

2.1.9. 使用 Red Hat Single Sign-On Operator 7.6.2 时探测的更改

为了与 7.6.2 中引入的 Red Hat Single Sign-On OpenShift 镜像中的更改一致,Operator 现在利用镜像中默认的存活度和就绪度探测,而不是使用自定义探测。对于现有的 Red Hat Single Sign-On 部署,Operator 将在升级过程中尝试自动更新探测。但是,如果您通过手动更改 keycloak-probes ConfigMap 来自定义探测,Operator 不会更新探测以避免覆盖用户修改。在这种情况下,您必须手动更新探测(或删除 ConfigMap 以便 Operator 重新创建它);否则升级的 Red Hat Single Sign-On 7.6.2 部署将显示为未就绪。

2.1.10. 在使用 Red Hat Single Sign-On Operator 7.6.5 时,会更改探测

为了允许在启用了 FIPS 的环境中运行,探测验证哈希算法已改变。对于探测的默认超时为 1 秒的基于模板的安装,并且指定了小于 1 的 CPU 限值,这可能会导致持续探测失败。如果这些失败会导致重启,您应该通过更改 DeploymentConfig 或实际到新发布的模板来增加探测超时,这与 Operator 中使用的内容有更大的超时值。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.