0

我有一个云负载balancer/virtual server/firewall位于一组 pod 前面Quarkus,几乎就像一个反向代理。流量通过该公共入口点进入并重新路由到内部网络。

我们正在使用 Azure B2C 登录应用程序,当您直接访问 pod 或内部负载均衡器时,这非常有效。

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

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

这有效:

https://pod1:8080

这也有效:

https://internal-load-balancer:8080

这不起作用:

https://external-load-balancer:8080

(重定向 uri 是内部负载平衡器)

如果有帮助,请提供其他信息。我们正在使用身份验证代码流并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

4

1 回答 1

1

我必须配置 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 标头,而不查看转发标头(默认为 false),启用 x-forwarded-host 标头,并覆盖 x-forwarded-host 属性以使用自定义标头名称。

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

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

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

于 2021-09-16T13:59:28.900 回答