我们正在使用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
的确切URL。这会导致重新定位,一次又一次。
我假设这打破了因为session_state
param是undefined
但遗憾的是我找不到关于这个主题的任何文件。
我该如何解决这个问题?
我遇到了类似keycloak的问题,但你的解决方案可能不一样。
根本原因是,我已经启动了多个keycloak实例,但是loadbalancer没有粘性会话。因此,每当请求进入不同的实例时,cookie在该实例上无效,它将重定向到登录,并且因为它被记录在该过程中将再次重复。
对于解决方案,我将keycloak归结为一个实例,我正在查看有关如何运行keycloak集群的keycloak文档。
这几乎肯定会发生,因为您的路由器处于“哈希”模式并使用路由的哈希值。我还没有弄清楚如何让keycloak javascript适配器与基于散列模式的路由正常工作,但至少你应该知道这是你遇到的问题。在Vue中,您可以将路由器设置为“历史”模式,它可以在没有哈希的情况下工作,并且可以解决问题。我打赌React具有相同的功能,作为一种解决方法。
(我意识到这个问题已经过时了,但它在duckduckgo搜索的顶部出现了问题,并且当前版本的javascript适配器仍然存在问题,所以我觉得它可以使用答案)