Keycloak - 代理/前端 URL/Javascript 客户端重定向问题

时间:2021-04-07 14:28:55

标签: vue.js keycloak reverse-proxy keycloak-services

我正在尝试将 Keycloak 用于一些未来的项目,它对我来说仍然很新,所以我正在阅读文档并在线搜索问题,但我目前被一件事难住了 - 我有一个 vuejs我作为客户端添加的应用程序 (127.0.0.1:3001),我在 IIS (idp.mc.local) 中有一个反向代理设置,然后是一个 docker 容器在运行 keycloak (127.0.0.1:8080) 的 Windows 上,当我尝试登录时,而不是被重定向回 vuejs 客户端,我只是被重定向到具有状态的反向代理的根目录网址中的值,如以下屏幕截图中的网络日志所示:

Network logs showing incorrected 'Location' redirect

如果我没有为领域设置前端 url 并绕过代理/挂钩我的 vuejs 客户端直接在 127.0.0.1:8080 上通过 Keycloak 登录,它会重定向到 127.0.0.1:3001/#state...正确,如下:

Network logs showing correct 'Location' redirect

我找不到任何解决此问题的方法,我认为领域的前端 url 应该说明代理地址?我不明白为什么 Keycloak 会在登录过程结束时重定向到它而不是我的客户端应用程序 url,redirect_uri 被 keycloak 忽略,并且出于某种原因将我带回到我的代理域的根目录。如果我真的手动访问了 127.0.0.1:3001/#state... 并且从错误的重定向中复制了状态值,我就成功登录了。

这让我很困惑,任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

答案确实是与 IIS 相关的问题,问题在于应用程序请求路由/ARR 的设置。需要的是编辑 IIS 应用程序请求路由的设置并取消选中该选项:

Reverse rewrite host in response headers 如下图所示:

IIS ARR Checkbox to untick

希望这对在某些时候可能遇到相同问题的其他人有所帮助!