从身份提供者注销时,Keycloak 未注销

Keycloak not logging out when logged out from identity provider

我正在将 keycloak 与远程 OIDC 提供商一起使用。当我从我的应用程序(与 Keycloak 对话)注销时,我也从外部 OIDC 提供商注销。但是,当我尝试相反的方法时,通过从外部 OIDC 提供商注销,我仍然登录到 keycloak。

是否缺少某些配置,以便从身份提供者注销也会从 Keycloak 注销?

是否有一些 URL 需要向远程 IdP 注册?我想这不会是常规注销 URL,因为这会启动一个调用远程 IdP 的注销过程,而后者又会在无限循环中调用 Keycloak 注销?

事实证明,远程 IdP 已经实现了 OpenID Connect 的 front channel logout spec,这需要一个 URL(在 Keycloak 中),当用户注销远程时,用户将被重定向到国内流离失所者。

Keycloak 提供的唯一 URL 是标准注销 URL,但这将在远程 IdP 处启动注销,这在我的情况下不起作用。我在 Keycloak 中添加了一个 pull request 以向注销 URL 添加一个查询参数,这将使其不会从远程 IdP 注销,据我所知,这将不完全符合前端通道注销规格,但它有望在我的情况下工作。拉取请求已被接受,但正在等待合并。

更新:

我的 PR 已合并,所以现在 Keycloak 支持使用前端通道注销规范的远程 IdP。他们现在可以使用参数 initiating_idp 重定向到标准注销 URL,并将在 Keycloak 中配置的 IdP 别名作为值。参见 https://www.keycloak.org/docs/latest/securing_apps/index.html#logout