2.3. RH SSO 7.4
以下更改已从 Red Hat Single Sign-On 7.3 变为 Red Hat Single Sign-On 7.4。
2.3.1. 升级到 EAP 7.3 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 服务器已升级为使用 EAP 7.3 作为底层容器。这个更改不会直接涉及任何特定的红帽单点登录服务器功能,但与迁移相关的一些变化。
2.3.1.1. 依赖项更新 复制链接链接已复制到粘贴板!
依赖项更新至 EAP 7.3 服务器使用的版本。例如,Infinispan 组件版本现在是 9.3.1.Final。
2.3.1.2. 配置更改 复制链接链接已复制到粘贴板!
standalone(-ha.xml 和 domain.xml 文件中有一些配置更改。按照升级 Red Hat Single Sign-On 服务器部分进行操作,以自动处理配置文件的迁移。
2.3.1.3. 跨数据中心复制更改 复制链接链接已复制到粘贴板!
您需要将 RHDG 升级到 7.3 版本。旧版本可能仍然可以正常工作,但未经测试,因此无法保证它正常工作。
2.3.2. 身份验证流程更改 复制链接链接已复制到粘贴板!
我们对身份验证流程进行了一些重构并改进,在迁移过程中需要注意它们。
2.3.2.1. REQUIRED 和 ALTERNATIVE 执行不支持相同的身份验证流 复制链接链接已复制到粘贴板!
在以前的版本中,同一级别的身份验证流中可能会执行 REQUIRED 和 ALTERNATIVE 执行。这种方法有一些问题,我们在身份验证 SPI 中进行了重构,这意味着这已不再有效。如果在同一级别上配置了 ALTERNATIVE 和 REQUIRED 执行,则 ALTERNATIVE 执行被视为禁用。
因此,在迁移到这个版本时,现有的身份验证流程将被迁移,但会保留上一个版本的行为。如果身份验证流程包含与 REQUIRED 执行相同的级别的 ALTERNATIVE 执行,ALTERNATIVE 执行会添加到单独的 REQUIRED 子流中。
此策略应确保与上一版本相同的或类似身份验证流程的行为。但是,您可以查看身份验证流程的配置,并重复检查它是否按预期工作。本建议适用于自定义验证程序实施的自定义身份验证流程。
2.3.2.2. 其它执行要求已删除 复制链接链接已复制到粘贴板!
关于迁移,最重要的变化是消除对执行身份验证中的选项要求的支持,并使用 CONDITIONAL 要求替换它,这会增加灵活性。
在之前的版本中配置的选项验证器将被替换为 CONDITIONAL 子流。这些子流具有 Conditions - User Configured 条件配置为第一个执行,前面的 OPTIONAL authenticator(如 OTP Form)作为第二个执行。对于用户,身份验证过程中的行为与之前版本的行为匹配。
2.3.2.3. SPI 更改 复制链接链接已复制到粘贴板!
Java 身份验证 SPI 和 Credential Provider SPI 中存在一些更改。
接口 Authenticator 没有改变,但如果您开发高级验证器来引入一些新凭证类型(凭证Model 的子类),则可能会受到影响。CredentialProvider 接口上存在更改,并引入一些新接口,如 CredentialValidator。
另外,如果您的验证器支持 OPTIONAL 执行要求,则可能会受到影响。建议您在服务器开发指南中仔细检查最新的身份验证示例以了解更多详细信息。
2.3.2.4. Freemarker 模板更改 复制链接链接已复制到粘贴板!
自由标记模板中存在更改。如果您自己拥有适用于登录表单的自定义自由标记模板或一些帐户表单,则可能会会受到影响,特别是与 OTP 相关的表单。我们建议您查看此版本的自由标记模板中的更改,并根据模板进行调整。
2.3.3. 重复的顶层组 复制链接链接已复制到粘贴板!
此发行版本解决了在域中创建重复的顶层组的问题。存在之前重复的组会使升级过程失败。如果使用 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 Set META-INF/jpa-changelog-9.0.1.xml::9.0.1- KEYCLOAK-12579-add-not-null-constraint::keycloak 失败。
2.3.4. 用户凭证更改 复制链接链接已复制到粘贴板!
我们为存储用户凭证提供了更多灵活性。另外,每个用户都可以有多个相同类型的凭证,如多个 OTP 凭证。与数据库架构中存在一些变化,但上一版本中的凭证会更新为新格式。用户仍可以使用之前版本中定义的密码或 OTP 凭证登录。
2.3.5. 新的可选客户端范围 复制链接链接已复制到粘贴板!
我们添加了 microprofile-jwt 可选客户端范围来处理 MicroProfile/JWT Auth 规范中定义的声明。这个新客户端范围定义了 protocol 映射程序,将经过身份验证的用户的用户名设置为 upn 声明,并将 realm 角色设置为组声明。
2.3.6. 改进了用户区域设置的处理 复制链接链接已复制到粘贴板!
现在,如何选择登录页面的区域以及用户更新了区域设置时,进行了一些改进。详情请查看 服务器管理指南。
2.3.7. JavaScript 适配器中的旧承诺 复制链接链接已复制到粘贴板!
您不再需要在 JavaScript 适配器中设置 promiseType,且两者同时可用。建议尽可能立即更新应用程序以使用原生保证 API(then 和 catch),因为旧 API(成功和错误)将在某个点上被删除。
2.3.8. 在服务器上部署脚本 复制链接链接已复制到粘贴板!
到目前为止,管理员可以通过红帽单点登录管理控制台和 RESTful 管理 API 将脚本上传到服务器。这个功能现已被禁用。用户应该直接将脚本部署到服务器。如需更多详细信息,请查看 JavaScript Providers。
2.3.9. JavaScript 适配器中的客户端凭证 复制链接链接已复制到粘贴板!
在以前的版本中,开发人员可以为 JavaScript 适配器提供客户端凭证。现在,这个功能已被移除,因为客户端的应用程序无法安全保存 secret。能够将 prompt=none 传播到默认的 IDP
我们已在名为 Accepts prompt=none forward from client 的 OIDC 身份提供程序配置中添加了一个切换,以标识可以处理包含 prompt=none 查询参数的 IDP。
在现在之前,在收到带有 prompt=none 的 auth 请求时,如果用户没有通过 IDP 进行身份验证,则域将返回 login_required 错误。现在,如果可以从现在确定默认 IDP(可以使用 kc_idp_hint 查询 param,或者为域设置默认 IDP)以及是否已为 IDP 启用了 Accepts prompt=none,则验证请求将转发到 IDP,检查用户是否已通过身份验证。
务必要注意,只有在指定了默认 IDP 时,这个切换才被考虑。在这种情况下,我们知道在不需要提示用户选择 IDP 的情况下转发 auth 请求。如果无法确定默认的 IDP,我们不能假设将使用哪个 IDP 来实现 auth 请求,因此不会执行请求转发。
2.3.10. 新的默认主机名供应商 复制链接链接已复制到粘贴板!
请求和固定主机名供应商已被新的默认主机名供应商替代。请求和固定主机名供应商现已弃用,我们建议您尽快切换到默认主机名供应商。
2.3.11. 弃用或删除的功能 复制链接链接已复制到粘贴板!
某些功能在状态有变化。
2.3.11.1. 令牌表示 Java 类中的已弃用方法 复制链接链接已复制到粘贴板!
在 2038 年,Lint 无法再保存自 1970 年以来的秒数,因此我们正在努力将这些值更新到长值。令牌声明中还有更多问题。int 默认的结果是 JSON 表示的 0,而不应包含它。
有关已弃用和替换方法的具体方法的详情,请参阅 JavaDocs 文档。
2.3.11.2. 上传脚本 复制链接链接已复制到粘贴板!
通过管理员其他端点/控制台上传脚本已弃用。它将在以后的发行版本中被删除。
2.3.12. 授权服务 Drools 策略 复制链接链接已复制到粘贴板!
Authorization Services Drools Policy 已被删除。