登录另一个应用程序后,Keycloak无限sso /登录循环

时间:2018-02-27 13:37:43

标签: loops gwt oauth single-sign-on keycloak

我有一个公共和私人区域的GWT应用程序,我想连接到Keycloak 3.4

但有一种情况不起作用。如果登录到同一领域的另一个应用程序,然后打开带有http://localhost:8080/AppName/的新浏览器选项卡,则应用程序将打开公共区域。这可以。 然后,我点击链接到http://localhost:8080/AppName/sso/login

的应用程序中的登录按钮

现在出现问题,以下两个网址(具有不同的状态参数)的无限循环开始:

http://localhost:8280/auth/realms/realmName/protocol/openid-connect/auth?response_type=code&client_id=AppName&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2FAppName%2Fsso%2Flogin&state=e7546fb4-dd04-4349-8b7d-2d84c6781d97&login=true&scope=openid

http://localhost:8080/AppName/sso/login#state=e7546fb4-dd04-4349-8b7d-2d84c6781d97&code=uss.AOpenWEowTeb8VPVnJ7c8ndCEE-a9N90WZdOOP1t448.19896787-621d-4a4f-ac99-a2f4fd108deb.04c20f46-b52c-42d3-8e99-447e1b8ee5f4

这在本地发生,因此没有代理。它独立于浏览器。 在keycloak中有一个为 AppName 客户端创建的会话,所以问题似乎出现在客户端代码中。

直接在新标签中调用网址http://localhost:8080/AppName/sso/login而不使用http://localhost:8080/AppName/之前打开应用程序,没有问题,我直接登录。

作为Keycloak适配器,我在应用程序中使用此库:https://github.com/realityforge/gwt-keycloak

我正在解决这个问题好几天,非常感谢你的帮助!提前谢谢......

1 个答案:

答案 0 :(得分:0)

它看起来像是一个浏览器(前端)应用,您正在使用授权代码流(response_code=code)。这对于浏览器应用来说并不常见且安全。您应该将库/ app配置为使用隐式流(response_code=id_token)。