我们正在使用Keycloak 2.3.0.Final,我们正在使用/auth/js/keycloak.js
提供的Javascript适配器。使用此适配器的应用程序是React + Redux应用程序,但这无关紧要。
当我们完成docs中描述的身份验证过程时,初始身份验证成功,但是当login-status-iframe.html
尝试刷新令牌时,我们会收到403 Forbidden。
它用于刷新令牌/auth/realms/<customer-realm>/protocol/openid-c…id=web-portal&origin=http%3A%2F%2Flocalhost%3A8080&session_state=undefined
的确切网址。
这会导致重新定位,一次又一次。
我认为这会因为session_state
param undefined
而中断,但遗憾的是我无法找到有关此主题的任何文档。
如何解决此问题?
答案 0 :(得分:5)
我不知道您是否找到了解决方案,但最近我也遇到了这个问题。在此issue thread中,用户djmason9的解决方案为我工作。只需为checkLoginIframe: false
参数添加initOptions
。
答案 1 :(得分:0)
我的keycloak也有类似的问题,但您的解决方案可能并不相同。
根本原因是,我启动了多个keycloak实例,但是负载均衡器没有粘性会话。因此,每次请求在不同的实例上进行时,该cookie在该实例上都是无效的,它将重定向到登录,并且由于它已登录,因此该过程将再次重复。
对于该解决方案,我已经将keycloak简化为一个实例,并且正在查看有关如何运行keycloak集群的keycloak文档。
答案 2 :(得分:0)
几乎可以肯定发生这种情况,因为您的路由器处于“哈希”模式,并且对路由使用哈希。我还没有弄清楚如何使keycloak javascript适配器在基于散列模式的路由中正常工作,但是至少您应该知道这是您要面对的问题。在Vue中,您可以将路由器设置为“历史记录”模式,在该模式下,它可以无哈希值运行,从而解决了该问题。我敢打赌,React具有与变通功能相同的功能。
(我知道这个问题很旧,但是它出现在duckduckgo搜索的顶部,并且该问题在当前版本的javascript适配器中仍然存在,因此我觉得它可以使用答案)
答案 3 :(得分:-2)
我遇到了同样的问题,我解决了它,将我的 keycloak 客户端上的网络源添加到“*”