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-bom
和 org.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
类中删除:
-
getAuthTime
和setAuthTime
.分别使用getAuth_time
和setAuth_time
方法。 -
NotBefore
.使用nbf
方法替代。 -
issuedAt
.改为使用iat
方法。 -
setSessionState
。改为使用setSessionId
方法(请参阅有关session_state
声明一节中的详细信息)
以下方法已从 JsonWebToken
类中删除:
-
过期
.改为使用exp
方法。 -
NotBefore
.使用nbf
方法替代。 -
issuedAt
.改为使用iat
方法。
您还应该预期令牌中没有设置 exp
和 nbf
声明,因为它们是可选的。在以前的版本中,这些声明使用 0
值设置,这不会有意义,因为它们的值应该是有效的 NumericDate
。
1.6.20. 弃用的 Cookie 方法被删除
以下用于设置自定义 Cookie 的 API 已被删除:
-
ServerCookie
- 被NewCookie.Builder
替代 -
LocaleSelectorProvider.KEYCLOAK_LOCALE
- 被CookieType.LOCALE
替代 -
HttpCookie
- 被NewCookie.Builder
替代 -
HttpResponse.setCookieIfAbsent (HttpCookie cookie)
- 被HttpResponse.setCookieIfAbsent (NewCookie cookie)
替代。
1.6.21. 弃用的 LinkedIn 供应商被删除
在版本 22.0 中,LinkedIn 的 OAuh 2.0 社交供应商被一个新的 OpenId Connect 实现替代。传统供应商已弃用,但不被删除,仅当它在某些现有域中正常工作时。Red Hat build of Keycloak 26 是删除旧供应商及其关联的 linkedin-oauth
功能。现在,默认的 LinkedIn
社交供应商是唯一可用的选项。