Keycloak无限重定向

Ram*_*ben 6 javascript openid http-status-code-403 reactjs keycloak

我们正在使用Keycloak 2.3.0.Final,我们正在使用可用的Javascript适配器/auth/js/keycloak.js.使用此适配器的应用程序是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_stateparam很undefined遗憾但是我找不到关于这个主题的任何文档.

我该如何解决这个问题?

alf*_*ema 6

这几乎肯定会发生,因为您的路由器处于“散列”模式并使用散列作为路由。我还没有弄清楚如何让 keycloak javascript 适配器与基于哈希模式的路由一起正常工作,但至少您应该知道这就是您面临的问题。在 Vue 中,您可以将路由器设置为“历史”模式,在该模式下它无需哈希即可工作,从而解决了问题。我敢打赌 React 具有相同的功能,作为一种解决方法。

(我意识到这个问题很旧,但它出现在 duckduckgo 搜索的顶部,并且问题仍然存在于当前版本的 javascript 适配器中,所以我觉得它可以使用答案)


小智 5

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


Mri*_*abh 0

我对 keycloak 也有类似的问题,但你的解决方案可能不一样。

根本原因是,我启动了多个 keycloak 实例,但负载均衡器没有粘性会话。因此,每次请求在不同的实例上进行时,cookie 在该实例上无效,它将重定向到登录,并且由于它已登录,因此该过程将再次重复。

对于解决方案,我已将 keycloak 降低到一个实例,并且我正在查看有关如何运行 keycloak 集群的 keycloak 文档。