1.6. 删除的功能


在上一节中,已经提到了一些功能,如 removed。以下小节详细介绍了其他删除的功能。

1.6.1. 删除了对 UMD 发行版的支持

Keycloak JS 库的 UMD 发行版 通用基础镜像定义 已被删除。这意味着库不再作为全局变量公开,必须 作为模块 导入。这个变化与现代 JavaScript 开发实践一致,允许在浏览器和构建工具之间获得更深层次的体验,通常会产生更可预测的代码,且具有较少的副作用。

如果您使用捆绑器,如 Vite 或 Webpack 没有任何更改,您将拥有与以前相同的体验。如果您在浏览器中直接使用库,则需要更新代码以导入库:

<!-- Before -->
<script src="/path/to/keycloak.js"></script>
<script>
    const keycloak = new Keycloak();
</script>

<!-- After -->
<script type="module">
    import Keycloak from '/path/to/keycloak.js';
    const keycloak = new Keycloak();
</script>

您还可以选择使用 导入映射 使库的导入不太详细:

<script type="importmap">
    {
        "imports": {
            "keycloak-js": "/path/to/keycloak.js"
        }
    }
</script>
<script type="module">
    // The library can now be imported without specifying the full path, providing a similar experience as with a bundler.
    import Keycloak from 'keycloak-js';
    const keycloak = new Keycloak();
</script>

如果使用 TypeScript,您可能需要更新 tsconfig.json 才能解析库:

{
    "compilerOptions": {
        "moduleResolution": "Bundler"
    }
}

1.6.2. 删除了 CollectionUtil intesection 方法

方法 org.keycloak.common.util.CollectionUtil.intersection 已被删除。您应该对现有集合使用 'java.util.Collection.retainAll'。

1.6.3. 删除帐户控制台 v2 主题

帐户控制台 v2 主题已从红帽构建的 Keycloak 中删除。此主题在红帽构建的 Keycloak 24 中弃用,并被帐户控制台 v3 主题替代。如果您仍然使用这个主题,您应该迁移到帐户控制台 v3 主题。

1.6.4. 原始主机名选项已删除

这些选项被新选项替代,称为 Hostname v2。如需了解更多详细信息,请参阅 配置主机名(v2)新主机名选项

1.6.5. 已删除代理选项

proxy 选项在红帽构建的 Keycloak 24 中被弃用,并在需要时被 proxy-headers 选项替代。如需了解更多详细信息 ,请参阅使用反向代理

1.6.6. 大多数 Java 适配器被删除

现在,大多数 Java 适配器已从红帽构建的 Keycloak 代码库和下载页面中删除。

  • 对于 OAuth 2.0/OIDC,这包括删除 EAP 适配器、Servlet Filter adapter、KeycloakInstalled 桌面适配器、jaxrs-oauth-client 适配器、JAAS 登录模块、Spring 适配器和 SpringBoot 适配器。
  • 对于 SAML,这包括删除 Servlet 过滤器适配器。JBoss EAP 仍然支持 SAML 适配器。
  • 通用授权客户端库仍被支持。您可以将其与任何其他 OAuth 2.0 或 OpenID Connect 库结合使用。您可以检查 快速入门,以了解这个授权客户端库与第三方 Java 适配器(如 Elytron OIDC 或 SpringBoot)一起使用的示例。您还可以检查快速入门以了解与 WildFly 搭配使用的 SAML 适配器示例。

1.6.7. 已删除 OSGi 元数据

由于所有使用 OSGi 元数据的 Java 适配器已被删除,因此不再为我们的 jar 生成 OSGi 元数据。

1.6.8. 旧的 Cookie 被删除

Red Hat build of Keycloak 不再发送 _LEGACY cookies,该 Cookie 引入为不支持 Cookie 上 SameSite 标志的旧浏览器。

_LEGACY cookies 也提供了另一种目的,这是允许从不安全的上下文登录。虽然在 Red Hat build of Keycloak 的生产环境部署中不推荐使用不安全上下文,但最好最好通过 localhost 之外的 http 访问 Red Hat build of Keycloak。作为 _LEGACY Cookie 的替代选择,红帽构建的 Keycloak 不再设置 secure 标志;但在使用不安全上下文时,它会设置 SameSite=Lax 而不是 SameSite=None

1.6.9. EnvironmentDependentProviderFactory 被删除

在几个发行本中弃用了 EnvironmentDependentProviderFactory.isSupported () 方法,现在已被删除。

相反,需要实现 isSupported (Config.Scope config)

1.6.10. 删除了对旧的 redirect_uri 参数和 SPI 选项的支持

以前的红帽构建的 Keycloak 版本支持用户自动退出,并通过打开 logout 端点 URL (如 http (s)://example-host/auth/realms/my-realm-name/protocol/openid-connect/logout?redirect_uri=encodedRedirectUri )来重定向到应用程序。此功能在红帽构建的 Keycloak 18 中弃用,并已在这个版本中删除,并遵循 OpenID Connect 规格。

作为这个更改的一部分,删除了 SPI 的以下相关配置选项:

  • --spi-login-protocol-openid-connect-legacy-logout-redirect-uri
  • --spi-login-protocol-openid-connect-suppress-logout-confirmation-screen

如果您仍然使用这些选项或 redirect_uri 参数用于注销,您应该实施 OpenID Connect RP-Initiated Logout 规格

1.6.11. org.keycloak:keycloak-model-legacy removed

模块 org.keycloak:keycloak-model-legacy 模块在以前的版本中已被弃用,并在此发行版本中被删除。改为使用 org.keycloak:keycloak-model-storage 模块。

1.6.12. 离线会话预加载已删除

现在,在上一个发行版本中弃用后,预加载离线会话的旧行为现已被删除。

1.6.13. setOrCreateChild () 方法从 JavaScript Admin Client 中删除

groups.setOrCreateChild () 方法已从基于 JavaScript 的 Admin 客户端中删除。如果您仍然使用此方法,请改为使用 createChildGroup ()updateChildGroup () 方法。

1.6.14. 删除了 session_state 声明

session_state 声明包含与 sid 声明相同的值,现在会根据 OpenID Connect Front-Channel Logout 和 OpenID Connect Back-Channel Logout 规格从所有令牌中删除。根据 OpenID Connect Session Management 规格,session_state 声明保留在 Access Token Response 中。

请注意,setSessionState () 方法也已从 IDToken 类中删除,而使用 setSessionId () 方法,getSession State () 方法现已弃用。

还包含一个新的 Session State (session_state) 映射器,并可分配给客户端范围(用于实例 基本 客户端范围)以恢复到旧行为。

如果使用 JS 适配器的旧版本,则应使用客户端范围(如上所述)的 Session State (session_state) 映射程序使用。

1.6.15. 启用持久会话时,空闲会话的宽限期

以前的红帽构建的 Keycloak 版本添加了两分钟宽限期,以闲置用户和客户端会话。这是因为以前的构架,其中会话刷新时间在集群中异步复制。使用持久的用户会话,这已不再需要,因此会删除宽限期。

要保留旧行为,请更新您的域配置,并将会话和客户端闲置时间延长两分钟。

1.6.16. 已删除适配器和 misc BOM 文件

org.keycloak.bom:keycloak-adapter-bomorg.keycloak.bom:keycloak-misc-bom BOM 文件已被删除。adapter BOM 不再有用,因为大多数 Java 适配器都已移除。misc BOM 仅包含一个工件、keycloak-test-helper,且该工件也会在此发行版本中被删除。

1.6.17. 已删除 Keycloak-test-helper

本发行版本中删除了 maven 工件 org.keycloak:keycloak-test-helper。工件提供了一些用于处理 Java 管理客户端的帮助程序方法。如果使用帮助程序方法,如果需要,可以将它们派生到应用程序中。

1.6.18. 已删除EE admin-client

本发行版本中删除了这个安全漏洞的 admin-client,但 Jakarta admin-client 仍被支持。

1.6.19. 已从某些类中删除了已弃用的方法

此方法已从 AccessToken 类中删除:

  • 过期.改为使用 exp 方法。
  • NotBefore.使用 nbf 方法替代。
  • issuedAt.改为使用 iat 方法。

以下方法已从 IDToken 类中删除:

  • getAuthTimesetAuthTime.分别使用 getAuth_timesetAuth_time 方法。
  • NotBefore.使用 nbf 方法替代。
  • issuedAt.改为使用 iat 方法。
  • setSessionState。改为使用 setSessionId 方法(请参阅有关 session_state 声明一节中的详细信息)

以下方法已从 JsonWebToken 类中删除:

  • 过期.改为使用 exp 方法。
  • NotBefore.使用 nbf 方法替代。
  • issuedAt.改为使用 iat 方法。

您还应该预期令牌中没有设置 expnbf 声明,因为它们是可选的。在以前的版本中,这些声明使用 0 值设置,这不会有意义,因为它们的值应该是有效的 NumericDate

1.6.21. 弃用的 LinkedIn 供应商被删除

在版本 22.0 中,LinkedIn 的 OAuh 2.0 社交供应商被一个新的 OpenId Connect 实现替代。传统供应商已弃用,但不被删除,仅当它在某些现有域中正常工作时。Red Hat build of Keycloak 26 是删除旧供应商及其关联的 linkedin-oauth 功能。现在,默认的 LinkedIn 社交供应商是唯一可用的选项。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.