Quarkus OIDC 重定向 uri 绝对路径
Posted
技术标签:
【中文标题】Quarkus OIDC 重定向 uri 绝对路径【英文标题】:Quarkus OIDC redirect uri absolute path 【发布时间】:2021-11-10 21:38:43 【问题描述】:我有一个云负载 balancer/virtual server/firewall
坐在一组 Quarkus
pod 前面,几乎就像一个反向代理。流量通过该公共入口点进入并重新路由到内部网络。
我们正在使用 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
【问题讨论】:
您确定外部负载均衡器可以在 quarkus pod 中使用该 dns 名称访问吗?你能用 ping 检查一下吗 是的。我们正在做一个 http 标头重定向以在内部路由外部流量。问题是内部应用程序认为重定向 uri 自动是内部名称(因为那是它运行的地方),我无法覆盖重定向 uri。在内部,如果我调用外部 url,我将被重定向到内部并且可以工作,但在外部,该内部 url 不可访问。 你是在 kubernetes 集群中运行这个吗? 是的。 “内部网络”是一个 Kubernetes 集群。永恒的网络是我们的入口点。我联系了 quarkus 聊天室,他们为我指出了正确的方向。这是反向代理配置:quarkus.io/guides/…> 以及将我带到我需要的地方的消息:quarkusio.zulipchat.com/#narrow/stream/187030-users/topic/…> 【参考方案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
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Quarkus OIDC 重定向 uri 绝对路径的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 .htaccess 仅针对 https / ssl 不将 uri 路径重定向到 index.php?