Quarkus OIDC 重定向 uri 绝对路径

Quarkus OIDC redirect uri absolute path

我有一个云负载 balancer/virtual server/firewall 位于 Quarkus pods 的集合前面,几乎充当反向代理。流量通过该 public 入口点进入并重新路由到内部网络。

我们正在使用 Azure B2C 登录应用程序,当您直接访问 pod 或内部负载平衡器时,它运行良好。

问题是,当使用外部负载平衡器时,重定向 uri 位于无法从 public 端访问的内部网络上下文中。

有没有办法将我们外部服务器的重定向 uri 设置为绝对 uri 而不是相对 uri?文档很清楚它是相对的,但我没有看到任何方法将它重定向到自定义 uri。或者在安全方面这是一种完全错误的方法?我知道我可以尝试重新配置外部负载平衡器,但想要一种快速设置重定向 uri 的方法。我知道这在其他框架中是可能的。

这个有效:

https://pod1:8080

这也有效:

https://internal-load-balancer:8080

这行不通:

https://external-load-balancer:8080

(redirect uri is the internal-load-balancer)

如果有帮助,请提供其他信息。我们正在使用授权代码流,quarkus-oidc 自动将重定向 url 设置为相对路径。我不确定是否有办法将重定向 uri 覆盖到我们的外部负载均衡器而不是内部负载均衡器。

https://quarkus.io/guides/security-openid-connect-web-authentication#quarkus-oidc_quarkus.oidc.authentication.redirect-path

已解决: 我必须配置 x-forwarded/reverse 代理才能读取原始来源:

https://quarkus.io/guides/security-openid-connect-web-authentication#external-and-internal-access-to-openid-connect-provider

我必须配置 x-forwarded/reverse 代理才能读取原始来源。 我将其添加到 application.properties:

quarkus.http.proxy.proxy-address-forwarding=true
quarkus.http.proxy.allow-forwarded=false
quarkus.http.proxy.enable-forwarded-host=true
quarkus.http.proxy.forwarded-host-header=X-ORIGINAL-HOST

这使应用程序可以查看 x-forwarded headers,而不查看转发的 header(默认为 false),启用 x-forwarded-host header,并覆盖 x-forwarded-host 属性 以使用自定义 header 名称。

我的内部负载平衡器有一个错误,它会用内部名称覆盖 x-forwarded-host,而不管 x-forwarded-host 是否已经存在。我还必须配置我的外部负载均衡器以添加额外的自定义 header(x-original-host 但名称是任意的)所以我的内部负载均衡器不会覆盖它。

配置 Quarkus 后,重定向 uri 使用新的自定义 header 构建指向外部负载均衡器的重定向 uri,一切都按预期工作。

https://quarkus.io/guides/security-openid-connect-web-authentication#running-behind-a-reverse-proxy