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

时间:2020-12-28 11:48:28

标签: spring-boot tomcat keycloak openid-connect

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

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

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

enter image description here

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

此外,我已将每个客户端的管理 URL 设置为每个应用程序的基本 URL。

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

1 个答案:

答案 0 :(得分:0)

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

在 spring boot 适配器配置文件中,我将 Keycloak URL 提到为 http://127.0.0.1:8080/auth

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

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