Keycloak 无限重定向

10
我们正在使用Keycloak 2.3.0.Final,并且在/auth/js/keycloak.js中使用可用的Javascript适配器。使用此适配器的应用程序是React+Redux应用程序,但这并不重要。
当我们按照文档中描述的进行身份验证过程时,初始身份验证成功,但是当login-status-iframe.html试图刷新令牌时,会收到403 Forbidden的错误。 它用于刷新令牌的确切URL是:/auth/realms/<customer-realm>/protocol/openid-c…id=web-portal&origin=http%3A%2F%2Flocalhost%3A8080&session_state=undefined。 这导致重定向,反复循环。
我认为这是因为session_state参数为undefined而导致的,但不幸的是,我找不到任何关于这个问题的文档。
我该如何解决这个问题?

3
你找到答案了吗? - Víctor Hugo
不是真正的答案,检查所有版本是否匹配。因为每个版本的keycloak都附带了它自己的keycloak.js。 - Ramon Gebben
5个回答

9

我不知道你是否解决了这个问题,但是我最近也遇到了这个问题。在这个问题线程中,用户djmason9的解决方案对我有用。只需为initOptions参数添加checkLoginIframe: false即可。


1
这个解决了我的一个问题,我在初始化选项中使用了 onLoad: 'check-sso'。在我添加了 checkLoginIframe: false 选项之前,初始化一直失败。 - Scott Leis

6
几乎可以确定是因为您的路由器处于“哈希”模式并使用哈希进行路由。我还没有找到如何使Keycloak javascript适配器与基于哈希模式的路由正常工作的方法,但至少您应该知道这是你面临的问题。在Vue中,您可以将路由器设置为“history”模式,在此模式下它可以在不使用哈希的情况下正常工作,解决了问题。我打赌React也有同样的功能,可作为一种解决方法。
(我意识到这个问题很旧,但它正在DuckDuckGo搜索的最前面浮出水面,并且在当前版本的javascript适配器中仍然存在这个问题,所以我觉得它需要一个答案)

1
我也遇到了同样的问题,我正在使用Vue和vue-router。我添加了mode: 'history',但这个解决方案并没有帮助我。 - michal

0

我在keycloak方面遇到了类似的问题,但你的解决方案可能不同。

根本原因是,我启动了多个keycloak实例,但负载均衡器没有使用粘性会话。所以每次请求都会被转发到不同的实例上,而那个实例上的cookie无效,它会重定向到登录页面,由于已经登录,这个过程会重复进行。

为了解决这个问题,我将keycloak降级到一个实例,并查看了关于运行keycloak集群的keycloak文档。


0

请确保Keycloak配置中的Web Origins没有尾随斜杠。

查看返回403的URL,特别是origin参数。该值应包含在相应客户端的Web Origin中定义的值。

我曾经遇到过这个问题,然后解决了它。


-2

我也遇到了同样的问题,通过在我的Keycloak客户端中添加Web源为“*”来解决了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接