多个客户端的 Keycloak 单点注销问题

Keycloak Single Logout Issue with multiple clients

我已经构建了两个 keycloak 客户端(spring-客户端和一个使用 keycloak OIDC spring 启动适配器和 OIDC tomcat 适配器的 tomcat-客户端)并且都是在同一个领域工作。这些客户有两个问题。

  1. 当我要登录这些客户端时,即使我使用相同的浏览器(多个选项卡)和相同的用户名,我也需要分别为每个客户端提供用户名和密码。
  2. 当我只需要注销一个客户端(tomcat-client)时注销,而另一个客户端(spring-boot-client)根本不注销并保持会话直到发生超时。

进一步调查时,我发现为两个客户端创建了两个单独的会话。 (见图)

因为我使用相同的领域和相同的用户,所以我不知道两个会话是如何创建的。我注意到另一件事,tomcat-client & security-admin-console 两个客户端都在同一个会话中。当我从 keycloak 管理控制台注销时,tomcat 客户端会自动注销。问题仅出在 spring-boot 客户端。

我还设置了每个客户的管理员 URL 作为每个应用程序的基础 URL。

谁能帮我解决这个问题。 谢谢

经过大量调试,我终于在我的配置中找到了问题。

在 spring 启动适配器配置文件中,我提到了 Keycloak URL 作为 http://127.0.0.1:8080/auth

在另一个适配器配置文件中,我提到它是 http://localhost:8080/auth

为两种适配器配置添加相同 URL 后,问题已得到解决。