升级指南
用于 Red Hat Single Sign-On 7.5
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 升级 Red Hat Single Sign-On 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On (RH-SSO) 7.5 基于 Keycloak 项目,并通过根据 SAML 2.0、OpenID Connect 和 OAuth 2.0 等常用标准提供 Web 单点登录功能,为您的 Web 应用程序提供安全。Red Hat Single Sign-On Server 可以充当基于 SAML 或 OpenID Connect 的用户身份供应商,使用基于标准的令牌在您的企业用户目录或用于身份信息的第三方 SSO 供应商和您的应用程序中进行媒体。
RH-SSO 提供两种工作模式:单机服务器或受管域。单机服务器工作模式表示将 RH-SSO 作为单一服务器实例运行。受管域工作模式允许从单一控制点管理多个 RH-SSO 实例。升级过程根据哪个操作模式的不同而有所不同。每个模式的具体说明在适用的地方提供。
本指南的目的是记录从 Red Hat Single Sign-On 7.x 成功升级到 Red Hat Single Sign-On 7.5 所需的步骤。
1.1. 关于升级 复制链接链接已复制到粘贴板!
根据您的 RH-SSO 版本,您可以选择三类升级之一。但是,如果您从 Keycloak 开始,您可以选择 此过程。
1.1.1. 主要升级 复制链接链接已复制到粘贴板!
当 RH-SSO 从一个主要版本升级到另一个主要版本时,需要一个主要升级或迁移,例如:从 Red Hat Single Sign-On 7.2 升级到 Red Hat Single Sign-On 8.0。主要版本之间可能需要重写应用程序或服务器扩展部分的 API 更改可能会破坏。
1.1.2. 小更新 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 定期提供点发行版本,它们是包括程序错误修复、安全修复和新功能的次要更新。如果您计划从一个 Red Hat Single Sign-On point 升级到另一个红帽单点登录(例如,从 Red Hat Single Sign-On 7.3 升级到 Red Hat Single Sign-On 7.5),则不应为应用程序或自定义服务器扩展(如果没有私有、不支持或技术预览 API)升级代码更改。
1.1.3. 微更新 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.5 还定期提供包含错误和安全修复的微版本。微版本以最后一个数字递增次要版本,例如从 7.5.0 到 7.5.1。这些版本不需要迁移,它不会影响服务器配置文件。ZIP 安装的补丁管理系统也可以回滚补丁和服务器配置。
微版本仅包含已更改的工件。例如,如果 Red Hat Single Sign-On 7.5.1 包含对服务器和 JavaScript 适配器的更改,但不支持 EAP 适配器,则只会发布服务器和 JavaScript 适配器,需要更新。
1.2. 将 Keycloak 迁移到 RH-SSO 复制链接链接已复制到粘贴板!
您可以迁移到 Red Hat Single Sign-On (受支持的红帽产品(来自 Keycloak),这是社区项目。
前提条件
- 要在升级前了解新功能,请查看 更改。
- 验证您已将正确的 Keycloak 版本安装为起点。要迁移到 Red Hat Single Sign-On 7.5,您需要 Keycloak 15.0.2。
流程
- 执行 Minor Upgrades 过程。虽然此过程被标为 Minor Upgrade,但与这个迁移应用的步骤相同。
- 执行 适配器升级步骤。
第 2 章 特定于发行版本的更改 复制链接链接已复制到粘贴板!
在升级前仔细检查这些更改。
2.1. RH SSO 7.5.3 复制链接链接已复制到粘贴板!
以下变化已从 Red Hat Single Sign-On 7.5.2 改为 Red Hat Single Sign-On 7.5.3。
2.1.1. Red Hat Single Sign-On Operator 复制链接链接已复制到粘贴板!
从 7.5.3 开始,您可以使用 Red Hat Single Sign-On Operator 7.6,它与 RH-SSO 7.5 完全兼容。7.5.z 不再发布 Operator。详情请查看 服务器安装与配置指南 中的相关章节。
2.2. RH SSO 7.5.1 复制链接链接已复制到粘贴板!
以下变化已从 Red Hat Single Sign-On 7.5.0 到 Red Hat Single Sign-On 7.5.1。
2.2.1. Red Hat Single Sign-On Operator 复制链接链接已复制到粘贴板!
2.2.1.1. 支持状态的变化 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On Operator 不再处于技术预览状态,它被支持。
2.2.1.2. Red Hat Single Sign-On Operator 中已弃用的功能 复制链接链接已复制到粘贴板!
在这个版本中,我们已弃用和/或标记为 Red Hat Single Sign-On Operator 中不支持的一些功能。这个问题涉及 Backup CRD 和 Operator 管理的 Postgres 数据库。详情请查看 服务器安装与配置指南 中的相关章节。
2.2.1.3. 频道提升 复制链接链接已复制到粘贴板!
在支持的 Operator 中,OLM 订阅的频道名称也从 alpha
改为 stable
。要升级到 Red Hat Single Sign-On Operator 7.5.1,您需要更新 OpenShift 中的订阅对象以使用 stable
频道。
2.2.2. 代理环境变量 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 现在遵循用于传出 HTTP 请求的标准 HTTP_PROXY
、HTTPS_PROXY
和 NO_PROXY
环境变量。如果您定义了 HTTP_PROXY
变量,但没有在 SPI 配置中指定的显式代理映射,则这个更改可能会导致代理服务器意外使用。要防止 Red Hat Single Sign-On 使用这些环境变量,您可以明确为所有请求创建一个代理路由,作为 .*;NO_PROXY
。
如需了解更多详细信息,请参阅服务器安装与配置指南中的相关章节。
2.3. RH SSO 7.5 复制链接链接已复制到粘贴板!
以下变化已从 Red Hat Single Sign-On 7.4 改为 Red Hat Single Sign-On 7.5。
2.3.1. 升级到 EAP 7.4 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 服务器已升级到使用 EAP 7.4 作为底层容器。这个更改不会直接涉及任何特定的 Red Hat Single Sign-On 服务器功能,但一些与迁移相关的变化。
2.3.1.1. 依赖项更新 复制链接链接已复制到粘贴板!
依赖项已更新为 EAP 7.4 服务器使用的版本。例如,Infinispan 组件版本现在是 11.0。
2.3.1.2. 配置更改 复制链接链接已复制到粘贴板!
standalone (-ha.xml 和 domain.xml 文件中有几个配置更改。您应该遵循 第 3.1.2 节 “升级 Red Hat Single Sign-On 服务器” 部分来自动处理配置文件迁移。
2.3.1.3. SmallRye 手动更改 复制链接链接已复制到粘贴板!
当 standalone.xml 包含对 SmallRye 模块的引用时,需要手动更改。这些模块已从底层的 JBoss EAP 发行版本中删除,如果配置引用它们,则不会启动服务器。在对配置进行任何更改之前,通过 migrate-standalone.cli
进行服务器配置迁移会失败。
要解决这个问题,请删除引用 SmallRye 模块的所有行。在默认配置中,您需要专门删除以下行:
<extension module="org.wildfly.extension.microprofile.config-smallrye"/> <extension module="org.wildfly.extension.microprofile.health-smallrye"/> <extension module="org.wildfly.extension.microprofile.metrics-smallrye"/>
<extension module="org.wildfly.extension.microprofile.config-smallrye"/>
<extension module="org.wildfly.extension.microprofile.health-smallrye"/>
<extension module="org.wildfly.extension.microprofile.metrics-smallrye"/>
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"/> <subsystem xmlns="urn:wildfly:microprofile-health-smallrye:2.0" security-enabled="false" empty-liveness-checks-status="${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}" empty-readiness-checks-status="${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}"/> <subsystem xmlns="urn:wildfly:microprofile-metrics-smallrye:2.0" security-enabled="false" exposed-subsystems="*" prefix="${wildfly.metrics.prefix:wildfly}"/>
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"/>
<subsystem xmlns="urn:wildfly:microprofile-health-smallrye:2.0" security-enabled="false" empty-liveness-checks-status="${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}" empty-readiness-checks-status="${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}"/>
<subsystem xmlns="urn:wildfly:microprofile-metrics-smallrye:2.0" security-enabled="false" exposed-subsystems="*" prefix="${wildfly.metrics.prefix:wildfly}"/>
2.3.1.4. 跨数据中心复制更改 复制链接链接已复制到粘贴板!
- 您需要将 RHDG 服务器升级到版本 8.1。旧版本可能仍可正常工作,但不再被测试。
-
在配置 Infinispan 缓存时,我们建议您使用添加到 remote-store 元素中的
protocolVersion
属性。当连接到 RHDG 服务器 8.1 时,推荐的 hotrod 协议版本为 2.9。Infinispan 库版本在红帽单点登录服务器和 RHDG 服务器之间有所不同。如需了解更多详细信息,请参阅跨数据中心文档。 -
我们建议您使用 connection
infinispan
子系统下的remoteStoreSecurityEnabled
属性。如需了解更多详细信息,请参阅跨数据中心文档。
2.3.2. UserModel 迁移 复制链接链接已复制到粘贴板!
UserModel
包括某些字段、用户名
、电子邮件
、firstName
和 lastName
,它们现在转换为自定义属性。这个变化的目的是为在即将推出的版本中向 Red Hat Single Sign-On 添加更复杂的用户配置文件。
如果数据库包含具有该确切名称的自定义属性的用户,这些属性将不再从数据库中读取,并可删除。因此,在升级到 RH SSO 7.5 之前,请重命名匹配其中一个名称的任何自定义属性。
这种情形意味着 用户名
现在可以被 UserModel.getFirstAttribute (UserModel.USERNAME)
进行设置。其他字段存在类似的影响。直接或间接类 UserModel
的实施器应该确保 setUsername
和 setSingleAttribute (UserModel.USERNAME, …)
之间的行为是一致的。
如果策略评估功能的用户使用评估中的属性数量,则应调整其策略。每个用户现在默认有 4 个新属性。
UserModel
的公共 API 不会更改。不需要更改 frontend 资源或 SPI 访问用户数据。另外,数据库还没有改变。
2.3.3. 升级到 PatternFly 4 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 登录主题组件已升级到 PatternFly 4。旧的 PatternFly 3 与新同时运行,因此可以保持 PF3 组件。
但是,执行对登录主题设计的一些变化。请将您的自定义登录方案升级到新版本。有关必要更改 的示例,请参考 example/themes/theme/sunrise
目录。不需要额外的设置。
2.3.4. 用于 Instagram IdP 的新 API 复制链接链接已复制到粘贴板!
Instagram IdP 现在使用新的 API。旧的旧的 API 已被弃用。这个更改需要新的 API 凭证。详情请参阅" 服务器管理指南 "。
对于使用 Instagram IdP 登录 Instagram 的用户,这些用户需要不同的身份验证方法,如密码。它们可以手动更新其 Instagram 社交链接,或在 Red Hat Single Sign-On 中创建新帐户。这个限制存在,因为前面 API 中的 Instagram 用户 ID 与新的 API 不兼容。但是,新的 API 会临时返回新的和旧用户 ID 以允许迁移。Red Hat Single Sign-On 用户在用户登录时自动迁移 ID。
2.3.5. SSRF 保护的有效请求 URI 复制链接链接已复制到粘贴板!
如果您使用 OpenID Connect 参数 request_uri
,您的客户端需要将 Valid Request URIs
配置为防止 SSRF 攻击
您可以通过客户端详情页面上的 Admin Console 或 admin REST API 或客户端注册 API 来配置此功能。有效的 Request URI 需要包含特定客户端允许的 Request URI 值列表。
您可以使用通配符或相对路径,如 Valid Redirect URIs
选项。但是,在安全起见,我们推荐使用特定值。
2.3.6. 只读用户属性 复制链接链接已复制到粘贴板!
只读用户属性现在可用。使用 REST API 更新用户或使用 Red Hat Single Sign-On 用户界面时,用户或管理员不会编辑这些用户属性。特别是,在使用以下任一变化时:
- 自定义用户存储供应商
- 自定义验证器
- 基于用户属性建立授权的自定义 JavaScript 授权策略
- X.509 身份验证器,具有可将 X.509 证书映射到用户身份的自定义属性
- 任何其它自定义功能(其中有些用户属性用作存储身份验证/授权/身份上下文的元数据),而不是简单的用户配置集信息。
如需了解更多详细信息,请参阅 Threat 模型缓解章节。
2.3.7. Docker 身份验证后不需要用户会话 复制链接链接已复制到粘贴板!
使用 Docker 协议成功身份验证后,不会创建用户会话。详情请参阅" 服务器管理指南 "。
2.3.8. 无默认刷新令牌的客户端凭证 复制链接链接已复制到粘贴板!
对于这个 Red Hat Single Sign-On 版本,OAuth2 客户端凭证 Grant 端点在默认情况下不发出刷新令牌。此行为与 OAuth2 规格一致。
因此,在成功客户端凭证身份验证后,Red Hat Single Sign-On 服务器上不会在 Red Hat Single Sign-On 服务器上创建用户会话。其结果提高了性能和内存消耗。我们鼓励使用 Client Credentials Grant 的客户端停止使用刷新令牌,而是在每次使用 grant_type=client_credentials
的请求进行身份验证,而不使用 refresh_token
作为授权类型。
为此,Red Hat Single Sign-On 支持撤销 OAuth2 Revocation 端点中的访问令牌。因此,如果需要,客户端被允许撤销单独的访问令牌。
为向后兼容,您可以保持在以前的版本中的行为。使用此方法时,在通过 Client Credentials Grant 成功身份验证后,仍然会发布刷新令牌,同时创建了用户会话。对于特定的客户端,您可以按照如下所示在管理控制台中启用之前的行为:
流程
- 点菜单中的 Clients。
- 点击您要修改的客户端。
- 展开 OpenID Connect 兼容性模式 部分。
- 将 客户的使用刷新令牌切换为 ON。
- 点 Save。
2.3.9. 删除非标准令牌内省端点 复制链接链接已复制到粘贴板!
在以前的版本中,Red Hat Single Sign-On 会公告两个内省端点: token_introspection_endpoint
和 introspection_endpoint
。后者是 RFC-8414 定义的。前者已弃用,现在已被删除。
2.3.10. LDAP no-import 修复 复制链接链接已复制到粘贴板!
在以前的 Red Hat Single Sign-On 版本中,当 LDAP 供应商配置了 Import Users
OFF 时,即使在一些非 LDAP 映射的属性被改变时,也可以更新该用户。这种情况会导致行为混淆。属性似乎被更新,但没有更新。
例如,如果您试图使用 admin REST API 更新用户,且用户有一些不正确的属性,则相应的更新是可能的。对于当前版本,无法更新,您就原因立即通知您。
2.4. RH SSO 7.4 复制链接链接已复制到粘贴板!
以下变化已从 Red Hat Single Sign-On 7.3 改为 Red Hat Single Sign-On 7.4。
2.4.1. 升级到 EAP 7.3 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 服务器已升级到使用 EAP 7.3 作为底层容器。这个更改不会直接涉及任何特定的 Red Hat Single Sign-On 服务器功能,但一些与迁移相关的变化。
2.4.1.1. 依赖项更新 复制链接链接已复制到粘贴板!
依赖项已更新为 EAP 7.3 服务器使用的版本。例如,Infinispan 组件版本现在是 9.3.1。最后。
2.4.1.2. 配置更改 复制链接链接已复制到粘贴板!
standalone (-ha.xml 和 domain.xml 文件中有几个配置更改。按照升级 Red Hat Single Sign-On 服务器部分来自动处理配置文件迁移。
2.4.1.3. 跨数据中心复制更改 复制链接链接已复制到粘贴板!
您需要将 RHDG 升级到 7.3 版本。旧版本可能仍然有效,但并没有经过测试,因此无法保证正常工作。
2.4.2. 身份验证流更改 复制链接链接已复制到粘贴板!
我们进行了一些与身份验证流程有关的重构和改进,这需要在迁移过程中注意。
2.4.2.1. REQUIRED 和 ALTERNATIVE 执行在同一身份验证流中不被支持 复制链接链接已复制到粘贴板!
在以前的版本中,同一级别的同一身份验证流中可以有 REQUIRED 和 ALTERNATIVE 执行。这种方法有一些问题,在 Authentication SPI 中重构了 SPI,这意味着这不再有效。如果 ALTERNATIVE 和 REQUIRED 执行在相同的级别上配置,则 ALTERNATIVE 执行被视为禁用。
因此,当迁移到这个版本时,您现有的身份验证流将被迁移,但保留了之前版本的行为。如果身份验证流程包含与 REQUIRED 执行相同的级别上的 ALTERNATIVE 执行,则会将 ALTERNATIVE 执行添加到单独的 REQUIRED 子流中。
此策略应确保与之前版本中的每个身份验证流的行为相同或相似。但是,您可以检查您的身份验证流的配置,并重复检查它是否按预期工作。这个建议特别适用于带有自定义验证器实现的自定义身份验证流程。
2.4.2.2. OPTIONAL 执行要求已删除 复制链接链接已复制到粘贴板!
关于迁移,最重要的更改是删除对身份验证执行中的选项要求的支持,并使用 CONDITIONAL 要求对其进行替换,这将增加灵活性。
之前的版本中配置的 OPTIONAL authenticators 替换为 CONDITIONAL 子流。这些子流会将 Condition - User Configured 条件配置为第一次执行,并且之前 OPTIONAL authenticator (如 OTP Form)作为第二个执行。对于用户,身份验证期间的行为与之前版本的行为一致。
2.4.2.3. SPI 更改 复制链接链接已复制到粘贴板!
Java Authentication SPI 和 Credential Provider SPI 中有一些更改。
接口授权器没有改变,但您开发高级验证器器引入一些新凭证类型(subclasses of CredentialModel)时,可能会会受到影响。CredentialProvider 接口上存在更改,并引入一些新接口,如 CredentialValidator。
另外,如果您的验证程序支持 OPTIONAL 执行要求,则可能会受到影响。建议您在服务器开发指南中仔细检查最新的身份验证示例以了解更多详细信息。
2.4.2.4. Freemarker 模板更改 复制链接链接已复制到粘贴板!
自由标记器模板中存在更改。如果您拥有用于登录表单或某些帐户表单的自定义自由标记模板,则会受到影响,特别是与 OTP 相关的表单。我们建议您查看此版本的 Freemarker 模板的更改,并根据模板进行调整。
2.4.3. 重复顶层组 复制链接链接已复制到粘贴板!
此发行版本解决了在 realm 中创建重复的顶层组的问题。但是,存在以前的重复组会导致升级过程失败。如果 Red Hat Single Sign-On 服务器使用 H2、MariaDB、MySQL 或 PostgreSQL 数据库,则 Red Hat Single Sign-On 服务器可能会受到此问题的影响。在启动升级前,检查服务器是否包含重复的顶层组。例如,可以在数据库级别执行以下 SQL 查询来列出它们:
SELECT REALM_ID, NAME, COUNT(*) FROM KEYCLOAK_GROUP WHERE PARENT_GROUP is NULL GROUP BY REALM_ID, NAME HAVING COUNT(*) > 1;
SELECT REALM_ID, NAME, COUNT(*) FROM KEYCLOAK_GROUP WHERE PARENT_GROUP is NULL GROUP BY REALM_ID, NAME HAVING COUNT(*) > 1;
每个域中只能有一个顶级组的名称相同。升级前,应检查并删除重复操作。升级中的错误包括消息 Change META-INF/jpa-changelog-9.0.1.xml::9.0.1- KEYCLOAK-12579-add-not-null-constraint::keycloak 失败。
2.4.4. 用户凭证更改 复制链接链接已复制到粘贴板!
我们在存储用户凭证方面增加了更大的灵活性。另外,每个用户都可以拥有同一类型的多个凭证,如多个 OTP 凭证。与数据库模式的关系存在一些变化,但之前版本中的凭证会更新为新的格式。用户仍可使用之前版本中定义的密码或 OTP 凭证登录。
2.4.5. 新的可选客户端范围 复制链接链接已复制到粘贴板!
我们已经添加了一个 microprofile-jwt 可选客户端范围,以处理 MicroProfile/JWT Auth 规范中定义的声明。这个新客户端范围定义了协议映射程序,将经过身份验证的用户的用户名设置为 upn 声明,并将 realm 角色设置为组声明。
2.4.6. 改进了用户区域设置的处理 复制链接链接已复制到粘贴板!
已进行了一些改进,可以如何选择登录页面的区域,以及为用户更新区域设置。详情请查看 服务器管理指南。
2.4.7. JavaScript 适配器中的传统承诺 复制链接链接已复制到粘贴板!
您不再需要在 JavaScript 适配器中设置 promiseType,且两者同时可用。建议您尽可能更新应用来使用原生承诺 API (then 和 catch),因为旧 API (成功和错误)将在某个时候被删除。
2.4.8. 将脚本部署到服务器 复制链接链接已复制到粘贴板!
到目前为止,管理员可通过红帽单点登录管理控制台和 RESTful Admin API 将脚本上传到服务器。现在禁用这个功能。用户应该将脚本直接部署到服务器。如需更多详细信息,请查看 JavaScript Providers。
2.4.9. JavaScript 适配器中的客户端凭证 复制链接链接已复制到粘贴板!
在以前的版本中,开发人员被允许为 JavaScript 适配器提供客户端凭证。现在,这个能力已被移除,因为客户端应用程序无法安全保护 secret。将 prompt=none 传播到默认 IDP 的功能
我们在名为 Accepts prompt=none 转发的 OIDC 身份提供程序配置中添加了一个切换,以找出能够处理包含 prompt=none 查询参数的转发请求的 IDP。
到目前为止,当收到带有 prompt=none 的 auth 请求时,如果域没有在 realm 中进行身份验证,则域会返回 login_required 错误,而无需检查用户是否由 IDP 进行身份验证。现在,如果可以为 auth 请求确定了一个默认 IDP (使用 kc_idp_hint 查询 param,或通过设置域的默认 IDP)以及 Accepts 提示=none 转发(来自 IDP),则 auth 请求将转发到 IDP,以检查用户是否已通过身份验证。
请注意,只有指定默认 IDP 时,此切换才会考虑。在这种情况下,我们知道在什么位置转发 auth 请求而无需提示用户选择 IDP。如果无法确定默认 IDP,我们不能假定将用于实现身份验证请求,因此不会执行请求转发。
2.4.10. 新的默认主机名供应商 复制链接链接已复制到粘贴板!
请求和固定主机名供应商已被新的默认主机名供应商替代。请求和固定主机名供应商现已弃用,我们建议您尽快切换到默认主机名供应商。
2.4.11. 弃用或删除的功能 复制链接链接已复制到粘贴板!
某些功能的状态发生了变化。
2.4.11.1. 令牌表示 Java 类中的已弃用方法 复制链接链接已复制到粘贴板!
在 2038 年中,自 1970 年起,int 无法再持有秒数,因此我们正在将这些值更新为长值。在令牌表示法中,还有其他问题。int 默认会导致 JSON 表示,但不应包含它。
有关已弃用和替换方法的具体方法的详情,请查看 JavaDocs 文档。
2.4.11.2. 上传脚本 复制链接链接已复制到粘贴板!
通过 admin rest endpoint/console 上传脚本已弃用。它将在以后的发行版本中被删除。
2.4.12. 授权服务 Drools 策略 复制链接链接已复制到粘贴板!
Authorization Services Drools 策略已被删除。
2.5. RH-SSO 7.3 复制链接链接已复制到粘贴板!
以下变化已从 RH-SSO 7.2 变为 RH-SSO 7.3。
2.5.1. 授权服务的更改 复制链接链接已复制到粘贴板!
添加了对 UMA 2.0 的支持。这个 UMA 规范版本引进了一些有关从服务器获取权限的方式的重要变化。
以下是 UMA 2.0 支持的主要变化。详情请查看授权服务指南。
- 已删除授权 API
- 在 UMA 2.0 (UMA 1.0)之前,客户端应用程序使用授权 API 从服务器获取权限,格式为 RPT。UMA 规范的新版本删除了授权 API,它也已从 Red Hat Single Sign-On 中删除。在 UMA 2.0 中,RPTs 现在可以使用特定的授权类型从令牌端点获取。详情请查看授权服务指南。
- 已删除权利 API
- 随着 UMA 2.0 的推出,我们决定利用令牌端点和 UMA 授权类型从 Red Hat Single Sign-On 获取 RPT,并避免有不同的 API。Entitlement API 提供的功能相同,仍然可以获得一组一个或多个资源和范围的权限(如果没有提供资源或范围)。详情请查看授权服务指南。
- 对 UMA Discovery 端点的更改
- UMA Discovery 文档已更改 ,请参阅授权服务指南。
- 对 Red Hat Single Sign-On Authorization JavaScript 适配器的更改
Red Hat Single Sign-On Authorization JavaScript 适配器(keycloak-authz.js)已更改,以满足 UMA 2.0 引入的更改,同时保持与之前相同的行为。主要变化是如何调用
授权和
权利
方法,它们现在预期是表示授权请求的特定对象类型。这个新对象类型通过支持 UMA grant 类型支持的不同参数,提供了从服务器获取权限的更大的灵活性。详情请查看授权服务指南。One of the main changes introduced by this release is that you are no longer required to exchange access tokens with RPTs in order to access resources protected by a resource server (when not using UMA). Depending on how the policy enforcer is configured on the resource server side, you can just send regular access tokens as a bearer token and permissions will still be enforced.
One of the main changes introduced by this release is that you are no longer required to exchange access tokens with RPTs in order to access resources protected by a resource server (when not using UMA). Depending on how the policy enforcer is configured on the resource server side, you can just send regular access tokens as a bearer token and permissions will still be enforced.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Single Sign-On Authorization Client Java API 的更改
-
当升级到 Red Hat Single Sign-On Authorization Client Java API 的新版本时,您会注意到一些表示类被移到
org.keycloak:keycloak-core
中。
2.5.2. 客户端模板改为客户端范围 复制链接链接已复制到粘贴板!
我们添加了对客户端范围的支持,这需要在迁移过程中需要注意。
- 客户端模板改为客户端范围
- 客户端模板被改为客户端范围。如果您有任何客户端模板,则会保留其协议映射程序和角色范围映射。
- 名称中替换了空格
-
使用名称中的空格字符的客户端模板通过将空格替换为下划线来重命名,因为客户端范围的名称中不允许空格。例如,如果客户端模板
my template
将更改为客户端范围my_template
。 - 将客户端范围链接到客户端
-
对于具有客户端模板的客户端,对应的客户端范围现在被添加为
客户端范围
。因此,客户端上会保留协议映射和角色范围映射。 - 域默认客户端范围不与现有客户端相关联
-
在迁移过程中,内置客户端范围列表将添加到每个域,以及
Realm Default Client Scopes
列表。但是,现有的客户端不会升级,新的客户端范围不会自动添加到它们。另外,所有协议映射程序和角色范围映射都保留在现有的客户端上。在新版本中,当创建一个新客户端时,它会自动关联有 Realm Default Client Scopes,并且没有附加任何协议映射程序。我们不会在迁移过程中更改现有客户端,因为无法正确地检测自定义,例如:客户端的协议映射程序。如果要更新现有客户端(从其中删除协议映射程序并使用客户端范围将它们链接到),则需要手动执行此操作。 - 需要再次确认同意
- 客户端范围更改需要重构同意。现在同意客户端范围,而非角色或协议映射程序。由于这个变化,之前确认用户持久的同意不再有效,用户需要在迁移后再次确认同意页面。
- 删除一些配置切换
-
需要的切换
范围范围
已从角色详情中删除。交换机需要
和Consent Text
已从协议映射程序详情中删除。这些交换机由 Client Scope 功能替代。
2.5.3. 新的默认客户端范围 复制链接链接已复制到粘贴板!
我们已经添加了新的域默认客户端范围 角色和
web-origins
。这些客户端范围包含协议映射程序,用于将用户的角色添加并允许的 web origins 到令牌。在迁移过程中,这些客户端范围应自动添加到所有 OpenID Connect 客户端中,作为默认的客户端范围。因此,数据库迁移完成后不需要设置。
2.5.3.1. 协议映射程序(SPI) 复制链接链接已复制到粘贴板!
与此相关,(不支持的)协议映射程序中有小的补充。只有在实施了自定义 ProtocolMapper 时,才能受影响。ProtocolMapper 接口上有一个新的 getPriority ()
方法。该方法的默认实现设置为 return 0。如果您的协议映射程序实施依赖于访问令牌 域Access
或 resourceAccess
属性中的角色,您可能需要提高映射程序的优先级。
2.5.3.2. 听力解决 复制链接链接已复制到粘贴板!
现在,通过身份验证的用户在令牌中至少具有一个客户端角色,所有客户端的使用者会自动添加到访问令牌中的 aud
声明中。另一方面,访问令牌可能不会自动包含 frontend 客户端的使用者,以供其发布。请参阅《 服务器管理指南》 以了解更多详细信息。
2.5.4. 升级到 EAP 7.2 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 服务器已升级到使用 EAP 7.2 作为底层容器。这不会直接涉及任何特定的 Red Hat Single Sign-On 服务器功能,但有一些与迁移相关的更改,值得提到。
- 依赖项更新
- 依赖项已更新为 EAP 7.2 服务器使用的版本。例如,Infinispan 现在是 9.3.1. last。
- 配置更改
-
standalone (-ha.xml 和
文件中有几个配置更改。您应该遵循 第 3.1.2 节 “升级 Red Hat Single Sign-On 服务器” 部分来自动处理配置文件迁移。domain.xml
- 跨数据中心复制更改
- 您需要将 RHDG 服务器升级到 7.3 版本。旧版本可能仍然可以工作,但不保证在我们不再测试时无法保证。
-
需要添加值为
2.6
的protocolVersion
属性到 Red Hat Single Sign-On 配置中remote-store
元素的配置。这是必须的,因为需要降级了 HotRod 协议版本,才能与 RHDG 7.3 使用的版本兼容。
2.5.5. 主机名配置 复制链接链接已复制到粘贴板!
在以前的版本中,建议您使用过滤器指定允许的主机名。现在,可以设置固定的主机名,这有助于确保使用有效主机名,并允许内部应用程序通过替代 URL 调用 Red Hat Single Sign-On,例如内部 IP 地址。建议您在生产环境中切换到此方法。
2.5.6. JavaScript adapter promise 复制链接链接已复制到粘贴板!
要将原生 JavaScript promise与 JavaScript 适配器搭配使用,现在需要在 init 选项中将 promiseType
设置为 native
。
过去,如果原生承诺提供一个打包程序,它同时提供了传统 Keycloak 承诺和原生承诺。这会导致因为错误处理程序总是在原生错误事件前设置问题,这会导致 Uncaught (承诺)
错误。
Red Hat Single Sign-On 中的 Microsoft Identity Provider 实施,用于依赖 Live SDK 端点授权并获取用户配置集。从 2018 年 11 月,Microsoft 不再使用对 Live SDK API 的支持,而是使用新的 Microsoft Graph API。Red Hat Single Sign-On 身份提供程序已更新为使用新的端点,因此如果此集成正在使用,请确保升级到最新的 Red Hat Single Sign-On 版本。
因为应用程序以 id 格式更改,在"Live SDK 应用程序"下注册的传统客户端应用程序将无法与 Microsoft Graph 端点一起工作。如果您遇到错误,说明 目录中找不到应用程序标识符,则必须在 Microsoft 应用程序注册门户中再次注册客户端应用程序 来获取新的应用程序 ID。
Red Hat Single Sign-On 中的 Google Identity Provider 实施,用于依赖 Google+ API 端点进行授权并获取用户配置集。从 2019 年 3 月,Google 删除了对 Google+ API 的支持,而是使用新的 Google Sign-in 身份验证系统。Red Hat Single Sign-On 身份提供程序已更新为使用新的端点,因此如果此集成正在使用,请确保升级到最新的 Red Hat Single Sign-On 版本。
如果您遇到错误,说明 目录中找不到应用程序标识符,则必须在 Google API 控制台 门户中再次注册客户端应用程序来获取新的应用程序 ID 和 secret。
可能需要调整 Google+ 用户信息端点提供的非标准声明的自定义映射程序,并且由 Google Sign-in API 在不同的名称下提供。有关可用声明的最新信息,请参阅 Google 文档。
2.5.9. LinkedIn Social Broker 更新至 LinkedIn API 版本 2 复制链接链接已复制到粘贴板!
使用 LinkedIn 进行相应操作,所有开发人员都需要迁移到其 API 和 OAuth 2.0 的版本 2.0。因此,我们更新了 LinkedIn Social Broker。
使用此代理的现有部署可能会在使用 LinkedIn API 版本 2 获取用户配置集时遇到错误。此错误可能与缺少授予用来配置代理的客户端应用程序的权限有关,这些代理可能无法在身份验证过程中访问 Profile API 或请求特定的 OAuth2 范围。
即使新创建的 LinkedIn 客户端应用程序,您需要确保客户端能够请求 r_liteprofile
和 r_emailaddress
OAuth2 范围,并且客户端应用程序可以从 https://api.linkedin.com/v2/me
端点获取当前的成员配置集。
由于 LinkedIn 所实施的隐私限制可以访问成员信息以及当前成员的配置文件 API 返回的有限声明集合,LinkedIn Social Broker 现在使用成员的电子邮件地址作为默认用户名。这意味着,在身份验证期间发送授权请求时,始终设置 r_emailaddress
。
2.6. RH-SSO 7.2 复制链接链接已复制到粘贴板!
以下变化已从 RH-SSO 7.1 变为 RH-SSO 7.2。
2.6.1. 新的密码哈希算法 复制链接链接已复制到粘贴板!
我们已经添加了两个新的密码哈希算法(pbkdf2-sha256 和 pbkdf2-sha512)。新域将使用 pbkdf2-sha256 哈希算法,带 27500 哈希迭代。由于 pbkdf2-sha256 比 pbkdf2 的迭代速度比 20000 增加到 27500。
如果密码策略包含哈希算法(没有指定)和迭代(未指定)和迭代的默认值,则会升级现有的域。如果您更改了哈希迭代,则需要手动更改为 pbkdf2-sha256 (如果使用更为安全的哈希算法)。
2.6.2. ID Token 需要 scope=openid 复制链接链接已复制到粘贴板!
在 RH-SSO 7.0 中,如果授权请求中存在 scope=openid
查询参数,则返回 ID 令牌。根据 OpenID Connect 规格,这不正确。
在 RH-SSO 7.1 中,在适配器中添加了此查询参数,但保留了旧行为来容纳迁移。
在 RH-SSO 7.2 中,这个行为已更改,现在需要 scope=openid
查询参数来将请求标记为 OpenID Connect 请求。如果省略了这个查询参数,则不会生成 ID Token。
2.6.3. Microsoft SQL Server 需要额外的依赖项 复制链接链接已复制到粘贴板!
Microsoft JDBC Driver 6.0 需要向 JDBC 驱动程序模块添加其他依赖项。如果您在使用 Microsoft SQL Server 时观察 NoClassDefFoundError
错误,请在 JDBC driver module.xml
文件中添加以下依赖项:
<module name="javax.xml.bind.api"/>
<module name="javax.xml.bind.api"/>
OpenID Connect Session Management 规格要求 OpenID Connect Authentication 响应中存在参数 session_state
。
在 RH-SSO 7.1 中,我们没有这个参数,但现在,Red Hat Single Sign-On 会默认添加此参数,如规格要求。
但是,一些 OpenID Connect / OAuth2 适配器,尤其是旧的 Red Hat Single Sign-On 适配器(如 RH-SSO 7.1 和更早版本),可能对此新参数出现问题。
例如,在客户端应用身份验证后,浏览器 URL 中将始终存在该参数。如果您使用 RH-SSO 7.1 或传统的 OAuth2 / OpenID Connect 适配器,在身份验证响应中添加 session_state
参数可能会很有用。这可以在 Red Hat Single Sign-On admin 控制台中的特定客户端完成,在使用 OpenID Connect
兼容性模式 一节中的客户端详情,如 第 4.1 节 “与旧的适配器兼容” 所述。存在 Exclude Session State From Authentication Response
开关,可打开 以防止将 session_state
参数添加到身份验证响应中。
Red Hat Single Sign-On 中的 Microsoft Identity Provider 实施版本 7.2.4 依赖于 Live SDK 端点来授权并获取用户配置集。从 2018 年 11 月,Microsoft 不再使用对 Live SDK API 的支持,而是使用新的 Microsoft Graph API。Red Hat Single Sign-On 身份提供程序已更新为使用新的端点,因此如果此集成在使用中,请确保升级到 Red Hat Single Sign-On 版本 7.2.5 或更高版本。
因为应用程序以 id 格式更改,在"Live SDK 应用程序"下注册的传统客户端应用程序将无法与 Microsoft Graph 端点一起工作。如果您遇到错误,说明 目录中找不到应用程序标识符,则必须在 Microsoft 应用程序注册门户中再次注册客户端应用程序 来获取新的应用程序 ID。
Red Hat Single Sign-On 中的 Google Identity Provider 实施最多版本 7.2.5 依赖于 Google+ API 端点进行授权并获取用户配置集。从 2019 年 3 月,Google 删除了对 Google+ API 的支持,而是使用新的 Google Sign-in 身份验证系统。Red Hat Single Sign-On 身份提供程序已更新为使用新的端点,因此如果此集成在使用中,请确保升级到 Red Hat Single Sign-On 版本 7.2.6 或更高版本。
如果您遇到错误,说明 目录中找不到应用程序标识符,则必须在 Google API 控制台 门户中再次注册客户端应用程序来获取新的应用程序 ID 和 secret。
可能需要调整 Google+ 用户信息端点提供的非标准声明的自定义映射程序,并且由 Google Sign-in API 在不同的名称下提供。有关可用声明的最新信息,请参阅 Google 文档。
2.6.7. LinkedIn Social Broker 更新至 LinkedIn API 版本 2 复制链接链接已复制到粘贴板!
使用 LinkedIn 进行相应操作,所有开发人员都需要迁移到其 API 和 OAuth 2.0 的版本 2.0。因此,我们更新了 LinkedIn Social Broker,因此如果此集成在使用中,请确保升级到 Red Hat Single Sign-On 版本 7.2.6 或更高版本。
使用此代理的现有部署可能会在使用 LinkedIn API 版本 2 获取用户配置集时遇到错误。此错误可能与缺少授予用来配置代理的客户端应用程序的权限有关,这些代理可能无法在身份验证过程中访问 Profile API 或请求特定的 OAuth2 范围。
即使新创建的 LinkedIn 客户端应用程序,您需要确保客户端能够请求 r_liteprofile
和 r_emailaddress
OAuth2 范围,并且客户端应用程序可以从 https://api.linkedin.com/v2/me
端点获取当前的成员配置集。
由于 LinkedIn 所实施的隐私限制可以访问成员信息以及当前成员的配置文件 API 返回的有限声明集合,LinkedIn Social Broker 现在使用成员的电子邮件地址作为默认用户名。这意味着,在身份验证期间发送授权请求时,始终设置 r_emailaddress
。
2.7. RH-SSO 7.1 复制链接链接已复制到粘贴板!
以下变化已从 RH-SSO 7.0 变为 RH-SSO 7.1。
2.7.1. 域密钥 复制链接链接已复制到粘贴板!
对于 RH-SSO 7.0,只有一组密钥可以与一个域相关联。这意味着,在更改密钥时,所有当前 Cookie 和令牌都将被无效,并且所有用户都必须重新验证。对于 RH-SSO 7.1,增加了对一个域的多个密钥的支持。在任何给定时间,一组用于创建签名的活动密钥是活跃的集合,但可以使用多个密钥来验证签名。这意味着可以验证旧的 Cookie 和令牌,然后使用新签名刷新,允许用户在密钥更改时保持身份验证。还有一些更改是通过管理控制台和管理 REST API 管理密钥;如需更多详情,请参阅服务器管理指南中的 Realm Keys 部分。
要允许无缝密钥轮转,您必须从客户端适配器中删除硬编码的密钥。只要未指定域密钥,客户端适配器将自动从服务器检索密钥。客户端适配器也会在密钥轮转时自动检索新密钥。
2.7.2. 客户端重定向 URI 匹配 复制链接链接已复制到粘贴板!
对于 RH-SSO 7.0,当与客户端的有效重定向 URI 匹配时,会忽略查询参数。对于 RH-SSO 7.1,不再忽略查询参数。如果您需要在重定向 URI 中包含查询参数,则必须指定客户端的有效重定向 URI 中的查询参数(例如 https://hostname/app/login?foo=bar),或使用通配符(如 https://hostname/app/login/*)。Valid Redirect URI (即 https://hostname/app#fragment)中也不再允许片段。
2.7.3. 自动重定向到身份提供程序 复制链接链接已复制到粘贴板!
对于 RH-SSO 7.1,身份提供程序不能设置为默认身份验证提供程序。要自动重定向到 RH-SSO 7.1 的身份供应商,现在您必须配置身份提供程序重定向器。有关更多信息,请参阅 《 服务器管理指南》 中的默认身份提供商。如果您之前设置了默认身份验证提供程序选项,则该值会在服务器升级到 RH-SSO 7.1 时自动用作身份提供程序重定向的值。
2.7.4. admin REST API 复制链接链接已复制到粘贴板!
对于 RH-SSO 7.0,如果没有指定 maxResults 查询参数,在 Admin REST API 中分页端点会返回所有结果。这可能会导致临时高负载和请求在返回大量结果时出现的问题(例如,用户)。对于 RH-SSO 7.1,如果没有指定 maxResults 的值,则返回最多 100 个结果。您可以通过将 maxResults 指定为 -1 来返回所有结果。
2.7.5. 服务器配置 复制链接链接已复制到粘贴板!
对于 RH-SSO 7.0,服务器配置在 keycloak-server.json 文件和 standalone/domain.xml 或 domain.xml 文件之间进行分割。对于 RH-SSO 7.1,keycloak-server.json 文件已被删除,并且所有服务器配置都通过 standalone.xml 或 domain.xml 文件来完成。RH-SSO 7.1 的升级步骤会自动将服务器配置从 keycloak-server.json 文件迁移到 standalone.xml 或 domain.xml 文件。
2.7.6. SAML 断言中的密钥加密算法 复制链接链接已复制到粘贴板!
对于 RH-SSO 7.1,SAML 断言和文档中的密钥现在使用 RSA-OAEP 加密方案进行加密。要使用加密的断言,请确保您的服务提供商支持这个加密方案。如果您的服务提供商不支持 RSA-OAEP,则 RH-SSO 可以配置为使用旧的 RSA-v1.5 加密方案,方法是使用系统属性 "keycloak.saml.saml.key_trans.rsa_v1.5"设置为 true。如果这样做,应该尽快升级您的服务提供商,以便可以恢复到更安全的 RSA-OAEP 加密方案。
第 3 章 升级 Red Hat Single Sign-On 服务器 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 服务器的升级或迁移流程取决于软件的旧版本。
- 如果您要升级到新的次版本,例如从 7.0.0 到 7.1.0,请遵循 Minor Upgrades 中的步骤。
- 如果您要从 Keycloak 15.0.2 迁移,请按照 Minor Upgrades 中的步骤操作。
- 如果您要升级到新的微版本,例如从 7.1.0 升级到 7.1.1,请遵循 Micro Upgrades 中的步骤。
3.1. 执行次要升级 复制链接链接已复制到粘贴板!
3.1.1. 准备升级 复制链接链接已复制到粘贴板!
在升级前,请了解执行升级步骤所需的顺序。特别是,在升级适配器前,请务必升级 Red Hat Single Sign-On 服务器。
在 Red Hat Single Sign-On 的次要升级中,所有用户会话都会丢失。升级后,所有用户都必须再次登录。
流程
- 备份旧安装(配置、主题等)。
- 使用相关数据库文档中的说明备份数据库。
升级红帽单点登录服务器。
升级后,数据库将不再与旧服务器兼容。
- 如果您需要恢复升级,请先恢复旧的安装,然后从备份副本恢复数据库。
- 升级适配器。
3.1.2. 升级 Red Hat Single Sign-On 服务器 复制链接链接已复制到粘贴板!
按照以下步骤确保服务器升级成功:
- 首先在非生产环境中测试升级,以防止生产环境中的任何安装问题。
- 在升级适配器前,升级 Red Hat Single Sign-On 服务器。另外,在升级适配器前确保升级的服务器可以在生产环境中正常工作。
这个升级步骤可能需要根据特定于安装的手动更改而修改。有关可能会影响升级的手动更改的详情,请参阅 特定于版本的更改。
根据您用于安装的方法从 ZIP 文件或 RPM 升级服务器。
3.1.2.1. 从 ZIP 文件升级服务器 复制链接链接已复制到粘贴板!
前提条件
- 处理任何开放的事务,并删除 data/tx-object-store/ 事务目录。
流程
- 下载新服务器存档。
- 将下载的存档移到所需的位置。
- 解压存档。此步骤安装最新的 Red Hat Single Sign-On 发行版本的干净实例。
对于单机安装,请将之前安装的
RHSSO_HOME/standalone/
目录复制到新安装的 目录中。对于域安装,请将之前安装的
RHSSO_HOME/domain/
目录复制到新安装的 目录中。对于域安装,请创建
RHSSO_HOME/domain/deployments
的空目录。注意:bin 目录中的文件不应被之前版本中的文件覆盖。更改应手动进行。
- 复制添加到模块目录中的任何自定义模块。
- 继续 部分,运行服务器升级脚本。
3.1.2.2. 从 RPM 升级服务器 复制链接链接已复制到粘贴板!
前提条件
- 处理任何开放的事务,并删除 /var/opt/rh/rh-sso7/lib/keycloak/standalone/data/tx-object-store/ 事务。
流程
订阅含有 JBOSS EAP 和红帽单点登录的相应存储库。
Red Hat Enterprise Linux 7:
subscription-manager repos --enable=rh-sso-7.5-for-rhel-7-server-rpms
subscription-manager repos --enable=rh-sso-7.5-for-rhel-7-server-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
subscription-manager repos --enable=rh-sso-7.5-for-rhel-8-x86_64-rpms
subscription-manager repos --enable=rh-sso-7.5-for-rhel-8-x86_64-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 JBOSS EAP 和 Red Hat Single Sign-On 禁用旧的产品存储库:
subscription-manager repos --disable=jb-eap-7.3-for-rhel-8-x86_64-rpms subscription-manager repos --disable=rh-sso-7.4-for-rhel-8-x86_64-rpms
subscription-manager repos --disable=jb-eap-7.3-for-rhel-8-x86_64-rpms subscription-manager repos --disable=rh-sso-7.4-for-rhel-8-x86_64-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查软件仓库列表:
dnf repolist
dnf repolist
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Updating Subscription Management repositories. repo id repo name rh-sso-7.5-for-rhel-8-x86_64-rpms Single Sign-On 7.5 for RHEL 8 x86_64 (RPMs) rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) rhel-8-for-x86_64-baseos-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
Updating Subscription Management repositories. repo id repo name rh-sso-7.5-for-rhel-8-x86_64-rpms Single Sign-On 7.5 for RHEL 8 x86_64 (RPMs) rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) rhel-8-for-x86_64-baseos-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 备份任何修改后的配置文件和自定义模块。
删除 RH-SSO 7.4 的软件包。
通常,
dnf 升级
会删除旧的软件包。但是,RH-SSO 7.5 软件包使用的格式与 JBoss EAP 7.3 软件包处理的文件冲突。因此,必须删除 RH-SSO 7.4 和 JBoss EAP 7.3 软件包。dnf remove --exclude java-1.8.0-openjdk rh-sso7-keycloak
dnf remove --exclude java-1.8.0-openjdk rh-sso7-keycloak
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 java-1.8.0-openjdk 并不是必需的,但此步骤在以后的流程中会保存同一组相关软件包的额外下载。
安装新版本的 RH-SSO。
dnf groupinstall rh-sso7
dnf groupinstall rh-sso7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf install rh-sso7-keycloak-15.0.2-3.redhat_00002.1.el8sso rh-sso7-keycloak-server-15.0.2-3.redhat_00002.1.el8sso
dnf install rh-sso7-keycloak-15.0.2-3.redhat_00002.1.el8sso rh-sso7-keycloak-server-15.0.2-3.redhat_00002.1.el8sso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要激活新版本中的所有新功能,如新子系统,您必须将每个备份配置文件手动合并到现有的配置文件中。
- 复制添加到模块目录中的任何自定义模块。
继续 部分,运行服务器升级脚本。
注意Red Hat Single Sign-On RPM 服务器分发使用
RHSSO_HOME=/opt/rh/rh-sso7/root/usr/share/keycloak
在调用以下的迁移脚本时使用它。
3.1.3. 运行服务器升级脚本 复制链接链接已复制到粘贴板!
根据您的之前安装,运行适用于您的情况的适当升级脚本:
3.1.3.1. 运行单机模式升级脚本 复制链接链接已复制到粘贴板!
流程
- 如果您使用与默认配置文件不同的配置文件,请编辑迁移脚本来指定新的文件名。
- 停止服务器。
运行升级脚本:
bin/jboss-cli.sh --file=bin/migrate-standalone.cli
bin/jboss-cli.sh --file=bin/migrate-standalone.cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.2. 运行 Standalone-High Availability Mode 升级脚本 复制链接链接已复制到粘贴板!
对于独立高可用性(HA)模式,所有实例都必须同时升级。
流程
- 如果您使用与默认配置文件不同的配置文件,请编辑迁移脚本来指定新的文件名。
- 停止服务器。
运行升级脚本:
bin/jboss-cli.sh --file=bin/migrate-standalone-ha.cli
bin/jboss-cli.sh --file=bin/migrate-standalone-ha.cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.3. 运行域模式升级脚本 复制链接链接已复制到粘贴板!
对于域模式,所有实例都必须同时升级。
流程
- 如果更改了配置集名称,您必须编辑升级脚本,以在脚本开头附近更改变量。
- 编辑域脚本,使其包含 keycloak-server.json 文件的位置。
- 停止服务器。
在域控制器上运行升级脚本
bin/jboss-cli.sh --file=bin/migrate-domain.cli
bin/jboss-cli.sh --file=bin/migrate-domain.cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.4. 运行 Domain-clustered Mode 升级脚本 复制链接链接已复制到粘贴板!
对于域集群模式,所有实例都必须同时升级。
流程
- 如果更改了配置集名称,您必须编辑升级脚本,以在脚本开头附近更改变量。
- 编辑 domain-clustered 脚本,使其包含 keycloak-server.json 文件的位置。
- 停止服务器。
仅在域控制器上运行升级脚本:
bin/jboss-cli.sh --file=bin/migrate-domain-clustered.cli
bin/jboss-cli.sh --file=bin/migrate-domain-clustered.cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4. 数据库迁移 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 可以自动迁移数据库模式,也可以选择手动进行。默认情况下,当您第一次启动新安装时,数据库会被自动迁移。
3.1.4.1. 自动关系数据库迁移 复制链接链接已复制到粘贴板!
要启用数据库模式的自动升级,将 migrationStrategy 属性值设置为默认的 connectionJpa 供应商 更新
:
或者运行此 CLI 命令:
/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationStrategy,value=update)
/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationStrategy,value=update)
当您使用此设置启动服务器时,如果新版本中的数据库 schema 已更改,则会自动迁移数据库。
在带有数以百万条记录的大型表中创建索引可轻松花费大量时间,并可能会在升级时造成主要服务中断。对于这些情况,我们添加了用于自动索引创建的阈值(记录数)。默认情况下,这个阈值是 300000
记录。当记录数量大于阈值时,索引不会被自动创建,并且在服务器日志中会出现警告信息,包括稍后手动应用的 SQL 命令。
要更改阈值,请设置 indexCreationThreshold
属性,为默认的 connection Liquibase
provider 的值:
或者运行此 CLI 命令:
/subsystem=keycloak-server/spi=connectionsLiquibase/:add(default-provider=default) /subsystem=keycloak-server/spi=connectionsLiquibase/provider=default/:add(properties={indexCreationThreshold => "300000"},enabled=true)
/subsystem=keycloak-server/spi=connectionsLiquibase/:add(default-provider=default)
/subsystem=keycloak-server/spi=connectionsLiquibase/provider=default/:add(properties={indexCreationThreshold => "300000"},enabled=true)
3.1.4.2. 手动关系数据库迁移 复制链接链接已复制到粘贴板!
要启用数据库 schema 的手动升级,请将默认 connectionJpa 供应商的 migrationStrategy 属性值设置为 manual
:
或者运行此 CLI 命令:
/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationStrategy,value=manual)
/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationStrategy,value=manual)
当您使用此配置启动服务器时,它会检查是否需要迁移数据库。所需的更改写入到 SQL 文件中,您可以检查并手动针对数据库运行。有关如何将此文件应用到数据库的详情,请参考相关数据库文档。将更改写入到文件后,服务器将退出。
3.1.5. 主题迁移 复制链接链接已复制到粘贴板!
如果您创建了任何自定义主题,则必须将其迁移到新服务器。根据您的已定制的功能,对内置主题的任何更改都可能需要反映在您的自定义主题中。
您必须将自己的自定义主题从旧服务器 复制到新的
服务器 主题
目录。在您需要查看以下更改之后,考虑更改是否需要应用到您的自定义主题。
总结:
- 如果您已自定义了以下列出的任何已更改模板,则需要比较基础中的模板,以查看是否需要应用更改。
- 如果您已自定义了任何样式,并且正在扩展 Red Hat Single Sign-Ones,您需要查看对风格的更改。如果您扩展了基本主题,您可以跳过这一步。
- 如果您有自定义消息,您可能需要更改密钥或值或添加额外的消息。
每个步骤都会在更改列表的下面详细阐述。
3.1.5.1. 主题更改 RH-SSO 7.3 复制链接链接已复制到粘贴板!
模板
- 账户:account.ftl
- 帐户:application.ftl
- 帐户:resource-detail.ftl (新的)
- 帐户:resource.ftl (新)
- account: template.ftl
- account: totp.ftl
- email-html: email-test.ftl
- email-html: email-verification-with-code.ftl (新的)
- email-html: email-verification.ftl
- Email-html: event-login_error.ftl
- Email-html: event-removed_totp.ftl
- email-html: event-update_password.ftl
- Email-html: event-update_totp.ftl
- email-html: executeActions.ftl
- email-html: identity-provider-link.ftl
- email-html: password-reset.ftl
- email-text:电子邮件验证-with-code.ftl (新的)
- Email-text: email-verification.ftl
- email-text: executeActions.ftl
- email-text: identity-provider-link.ftl
- email-text: password-reset.ftl
- login:cli_splash.ftl (新的)
- login: code.ftl
- login: error.ftl
- login: info.ftl
- login: login-config-totp-text.ftl (新的)
- login: login-config-totp.ftl
- Login: login-idp-link-confirm.ftl
- login: login-idp-link-email.ftl
- login: login-oauth-grant.ftl
- login: login-page-expired.ftl
- login: login-reset-password.ftl
- login: login-totp.ftl
- login: login-update-password.ftl
- login: login-update-profile.ftl
- login: login-verify-email-code-text.ftl (新的)
- login: login-verify-email.ftl
- login: login-x509-info.ftl
- login: login.ftl
- login: register.ftl
- login: template.ftl
- login:术语.ftl
- welcome: index.ftl (新的)
消息
- account: messages_en.properties
- admin: admin-messages_en.properties
- 电子邮件: messages_en.properties
- login: messages_en.properties
样式
- 登录:login-rhsso.css (新的)
- 欢迎: welcome-rhsso.css
3.1.5.2. Theme changes RH-SSO 7.2 复制链接链接已复制到粘贴板!
模板
- 账户:account.ftl
- 帐户:application.ftl
- 账户: federatedIdentity.ftl
- 帐户:password.ftl
- 账户: sessions.ftl
- account: template.ftl
- account: totp.ftl
- admin: index.ftl
- 电子邮件: email-test.ftl (新的)
- 电子邮件: email-verification.ftl
- 电子邮件:event-login_error.ftl
- 电子邮件:event-removed_totp.ftl
- 电子邮件:event-update_password.ftl
- 电子邮件:event-update_totp.ftl
- email: executeActions.ftl
- 电子邮件:identity-provider-link.ftl
- 电子邮件:password-reset.ftl
- login: bypass_kerberos.ftl (删除)
- login: error.ftl
- login: info.ftl
- login: login-config-totp.ftl
- login: login-idp-link-email.ftl
- login: login-oauth-grant.ftl
- login: login-page-expired.ftl (新的)
- login: login-reset-password.ftl
- login: login-totp.ftl
- login: login-update-password.ftl
- login: login-update-profile.ftl
- login: login-verify-email.ftl
- login: login-x509-info.ftl (新的)
- login:login.ftl (新)
- login: register.ftl (新)
- login:template.ftl (新)
- login:术语.ftl (新的)
消息
- account: messages_en.properties
- admin: admin-messages_en.properties
- admin: messages_en.properties
- 电子邮件: messages_en.properties
- login: messages_en.properties
样式
- 帐户:accounts.css
- login: login.css
3.1.5.3. 主题改变了 RH-SSO 7.1 复制链接链接已复制到粘贴板!
模板
- 账户:account.ftl
- 账户: federatedIdentity.ftl
- account: totp.ftl
- login: info.ftl
- login: login-config-totp.ftl
- login: login-reset-password.ftl
- login: login.ftl
消息
- 帐户:编辑AccountHtmlTtile 重命名为 editAccountHtmlTitle
- account: role_uma_authorization 添加
- login: loginTotpStep1 值已更改
- login: invalidPasswordGenericMessage added
- login: invlidRequesterMessage 重命名为 invalidRequesterMessage
- login:添加 clientDisabledMessage
样式
- 帐户:accounts.css
- login: login.css
3.1.5.4. 迁移模板 复制链接链接已复制到粘贴板!
如果您已自定义了任何模板,您需要仔细检查对模板进行的更改,以确定您是否需要对自定义模板应用这些更改。很可能需要对自定义模板应用相同的更改。如果您还没有自定义任何列出的模板,您可以跳过本节。
最佳实践是使用 diff 工具比较模板,以查看可能需要对自定义模板进行的更改。如果您只进行了较小的更改,比较更新的模板与自定义模板更为简单。但是,如果您进行了很多更改,可以将新模板与自定义旧模板进行比较,因为这会显示您需要做了哪些更改。
以下屏幕截图对比了来自登录主题的 info.ftl 模板和示例自定义主题:
带有自定义登录主题模板的更新版本与自定义登录主题模板的比较
从这一比较比较,易于识别第一个更改(Hello world!!
)是自定义,而第二次更改(如果页重定向
)是更改为主题的变动。通过将第二个更改复制到自定义模板,您已成功更新自定义模板。
对于替代方法,以下屏幕截图将旧安装中的 info.ftl 模板与新安装的 update info.ftl 模板进行比较:
旧安装中的登录主题模板与登录主题模板的更新版本的比较
从此比较中,易于识别基本模板中更改的内容。然后,您必须手动对修改的模板进行相同的更改。由于这种方法并不像第一种方法那样简单,因此只有第一种方法不能可行时,才使用此方法。
3.1.5.5. 迁移消息 复制链接链接已复制到粘贴板!
如果您添加了对其他语言的支持,则需要应用上面列出的所有更改。如果您没有为其他语言添加支持,则您可能不需要更改任何内容;您只需要在主题中更改了受影响的消息,则只需要进行更改。
对于添加的值,请查看基本主题中消息的值以确定是否需要自定义该消息。
对于重命名的密钥,请重命名自定义主题中的 键。
对于 changed 值,请检查基本主题中的值,以确定您是否需要对自定义主题进行更改。
3.1.5.6. 迁移风格 复制链接链接已复制到粘贴板!
如果您要从 keycloak 或 rh-sso 它们继承样式,您可能需要更新自定义样式,以反映对内置方式所做的更改。
最佳实践是使用 diff 工具比较旧服务器安装与新服务器安装之间的样式表的更改。
例如,使用 diff 命令:
diff RHSSO_HOME_OLD/themes/keycloak/login/resources/css/login.css \ RHSSO_HOME_NEW/themes/keycloak/login/resources/css/login.css
$ diff RHSSO_HOME_OLD/themes/keycloak/login/resources/css/login.css \
RHSSO_HOME_NEW/themes/keycloak/login/resources/css/login.css
检查更改,并确定它们是否影响您的自定义样式。
3.2. 执行微升级 复制链接链接已复制到粘贴板!
3.2.1. ZIP/installer 安装补丁 复制链接链接已复制到粘贴板!
可以从红帽客户门户下载 RH-SSO 的 ZIP 安装补丁。
对于受管域环境中的多个 RH-SSO 主机,可以从您的 RH-SSO 域控制器中修补各个主机。
除了应用补丁程序外,您还可以回滚补丁应用程序。
3.2.1.1. ZIP 安装补丁的重要备注 复制链接链接已复制到粘贴板!
-
如果您应用了一个更新模块的补丁,则在运行时使用的新修补 JAR 存储在
RHSSO_HOME/modules/system/layers/base/.overlays/PATCH_ID/MODULE
。原始未修补的文件保留在RHSSO_HOME/modules/system/layers/base/layers/base/MODULE
中,但这些 JAR 不会被 在运行时使用。 为了显著减少 RH-SSO 7 的累计补丁版本的大小,您无法对累积补丁进行部分回滚。对于已应用的补丁,您将只能回滚整个补丁。
例如,如果您将 CP03 应用到 RH-SSO 7.0.0,则将无法回滚到 CP01 或 CP02。如果您希望能够回滚到每个累积补丁版本,则必须按照发布顺序单独应用每个累积补丁。
3.2.1.2. 应用补丁 复制链接链接已复制到粘贴板!
使用 RPM 方法安装的 RH-SSO 服务器无法使用下列说明进行更新。请参阅应用补丁的 RPM。
您可以使用 管理 CLI 或管理控制台 将下载的补丁应用于 RH-SSO 服务器。
流程
- 从红帽客户门户网站下载补丁文件,地址为 https://access.redhat.com/downloads/。
在管理 CLI 中,使用以下命令应用补丁,包括补丁文件的适当路径:
patch apply /path/to/downloaded-patch.zip
patch apply /path/to/downloaded-patch.zip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意若要对受管域中的另一个 RH-SSO 主机进行补丁,您可以使用
--host=
参数指定 RH-SSO 主机名。例如:patch apply /path/to/downloaded-patch.zip --host=my-host
patch apply /path/to/downloaded-patch.zip --host=my-host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果尝试应用补丁时存在任何冲突,补丁工具将会发出警告。如果存在冲突,输入
patch --help
来使用可用的参数重新运行命令,并指定如何解决冲突。重启 RH-SSO 服务器以使补丁生效:
shutdown --restart=true
shutdown --restart=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
- 从红帽客户门户网站下载补丁文件,地址为 https://access.redhat.com/downloads/。
打开 管理控制台,再导航到 Patch Management 视图。
对于单机服务器,点 Patching 选项卡。
单机服务器的补丁管理屏幕
对于受管域中的服务器,单击 Patching 选项卡,然后从表中选择您要修补的主机,然后单击 View。
受管域的补丁管理屏幕
单击 Apply a New Patch。
- 如果您要修补受管域主机,请在下一屏幕中选择要关闭主机上的服务器,然后单击下一步。
单击 Browse 按钮,选择您要应用的下载补丁,然后单击 Next。
应用补丁屏幕
..如果尝试应用补丁有任何冲突,则会显示警告。点 View error details 查看冲突详情。如果存在冲突,您可以取消操作,或者选择 覆盖所有冲突 复选框并点 Next。覆盖冲突会导致补丁内容覆盖用户的任何修改。
- 成功应用了补丁后,选择是否重启 RH-SSO 现在以使补丁生效,然后单击 Finish。
3.2.1.3. 回滚补丁 复制链接链接已复制到粘贴板!
您可以使用 管理 CLI 或管理控制台 来回滚之前应用的 RH-SSO 补丁。???
使用补丁管理系统回滚补丁并不适合作为常规卸载功能。它仅应在有良好效果的修补程序应用后立即使用。
前提条件
- 之前应用的补丁。
在这两种流程中,在指定 Reset Configuration
选项的值时要谨慎使用:
如果设置为 TRUE
,修补回滚过程也会将 RH-SSO 服务器配置文件回滚到其 pre-patch 状态。应用补丁后,对 RH-SSO 服务器配置文件所做的任何更改都将丢失。
如果设置为 FALSE
,服务器配置文件将不会回滚。在这种情况下,服务器可能不会在回滚后启动,因为补丁可能会更改了配置,如命名空间,这些配置可能不再有效,必须手动修复。
流程
在管理 CLI 中,使用
patch history
命令查找您要回滚的补丁 ID。注意如果您使用的是受管域,则必须在此流程中的命令中添加
--host=HOSTNAME
参数以指定 RH-SSO 主机。使用上一步中的适当补丁 ID 回滚补丁。
patch rollback --patch-id=PATCH_ID --reset-configuration=TRUE
patch rollback --patch-id=PATCH_ID --reset-configuration=TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果尝试回滚补丁时有任何冲突,补丁工具将会发出警告。如果存在冲突,输入
patch --help
来使用可用的参数重新运行命令,并指定如何解决冲突。重启 RH-SSO 服务器以使补丁回滚生效:
shutdown --restart=true
shutdown --restart=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
打开管理控制台,再导航到 Patch Management 视图。
- 对于单机服务器,点 Patching 选项卡。
- 对于受管域中的服务器,单击 Patching 选项卡,然后从表中选择您要修补的主机,然后单击 View。
从表中选择您要回滚的补丁,然后点 Rollback。
最近补丁历史记录屏幕
..如果您要在受管域主机上回滚补丁,请在下一屏幕中选择是否关闭主机上的服务器,然后单击下一步。
为回滚过程选择选项,然后点 Next。
patch Rollback 选项
确认要回滚的选项和补丁,然后单击下一步。
- 如果尝试回滚补丁并未选择 覆盖所有 选项,则会显示警告。点 View error details 查看冲突详情。如果存在冲突,您可以取消操作,或者点击 Choose Options,然后再次尝试选择 覆盖所有 复选框的操作。覆盖冲突会导致回滚操作覆盖任何用户修改。
- 成功回滚补丁后,选择是否重启 RH-SSO 服务器以使更改生效,然后单击 Finish。
3.2.1.4. 清除补丁历史记录 复制链接链接已复制到粘贴板!
当补丁应用到 RH-SSO 服务器时,补丁的内容和历史记录会被保留以用于回滚操作。如果应用了多个累积补丁,补丁历史记录可能会占用大量磁盘空间。
您可以使用以下管理 CLI 命令删除目前尚未使用的所有较早补丁:使用此命令时,只会保留最新的累积补丁和 GA 版本。仅当之前应用了多个累积补丁时,这仅适用于释放空间。
/core-service=patching:ageout-history
/core-service=patching:ageout-history
如果您清除了补丁历史记录,您将无法回滚之前应用的补丁。
3.2.2. 修补 RPM 安装 复制链接链接已复制到粘贴板!
前提条件
- 确保基础操作系统为最新版本,并且已订阅并启用,以便从标准 Red Hat Enterprise Linux 存储库获取更新。
- 确保您已订阅了更新的相关 RH-SSO 存储库。
- 备份所有配置文件、部署和用户数据。
对于受管域,应首先更新 RH-SSO 域控制器。
要通过 RPM 从订阅的存储库安装 RH-SSO 补丁,请使用以下命令更新您的 Red Hat Enterprise Linux 系统:
yum update
yum update
第 4 章 升级 Red Hat Single Sign-On 适配器 复制链接链接已复制到粘贴板!
务必要先升级 Red Hat Single Sign-On 服务器,然后升级适配器。适配器的早期版本可能适用于后续版本的 Red Hat Single Sign-On 服务器,但 Red Hat Single Sign-On 服务器的早期版本可能不适用于将来的适配器版本。
4.1. 与旧的适配器兼容 复制链接链接已复制到粘贴板!
如前所述,我们尝试使用适配器的较老版本的 Red Hat Single Sign-On 服务器支持更新的 Red Hat Single Sign-On 服务器版本。但是,在某些情况下,我们需要在 Red Hat Single Sign-On 服务器中包含修复功能,这可能会破坏与较旧版本的适配器兼容。例如,在我们实现 OpenID Connect 规格的新方面时,旧的客户端适配器版本不能意识到。
在这些情况下,添加了兼容性模式。对于 OpenId Connect 客户端,在 Red Hat Single Sign-On 管理控制台中有一个名为 OpenID Connect
兼容性模式的部分,其具有客户端详情。在这里,您可以禁用 Red Hat Single Sign-On 服务器的一些新方面,以保持与较旧客户端适配器的兼容性。有关单个交换机的工具提示提供了更多详细信息。
4.2. 升级 EAP 适配器 复制链接链接已复制到粘贴板!
流程
如果您最初使用下载的存档安装适配器,要升级 JBoss EAP 适配器,请执行以下步骤。
- 下载新的适配器存档。
-
通过删除
EAP_HOME/modules/system/add-ons/keycloak/
目录来删除前面的适配器模块。 -
将下载的存档解压缩到
EAP_HOME
中。
流程
如果您最初使用 RPM 安装适配器,要升级适配器,请完成以下步骤,具体取决于您是执行次版本还是微型升级:
- 对于微小的升级,使用 Yum 卸载您当前安装的任何适配器,然后使用 Yum 安装新版本的适配器。
对于微型升级,可使用 Yum 升级适配器。这是微型升级的唯一步骤。
yum update
yum update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 升级 JavaScript 适配器 复制链接链接已复制到粘贴板!
要升级已复制到 web 应用程序的 JavaScript 适配器,请执行以下步骤。
流程
- 下载新的适配器存档。
- 使用下载的存档中的 keycloak.js 文件覆盖应用程序中的 keycloak.js 文件。
4.4. 升级 Node.js 适配器 复制链接链接已复制到粘贴板!
要升级已复制到 web 应用程序的 Node.js 适配器,请执行以下步骤。
流程
- 下载新的适配器存档。
- 删除现有的 Node.js 适配器目录
- 将更新的文件解压缩到位
- 在应用程序的 package.json 中更改 keycloak-connect 的依赖项