不同端口代理背后的 Quarkus OIDC

问题描述 投票:0回答:1

我使用 Quarkus 及其 OIDC 扩展来允许用户通过 Google 进行身份验证。当 quarkus 应用程序向公众公开时,一切都很好。现在我想把它放在代理后面。这就是事情失败的地方

当 Quarkus 构建重定向 URL 以作为其 OAuth 流程的一部分发送给 Google 时,它包括它正在侦听的内部 URL,然后 Google 拒绝该 URL,因为它与注册的重定向 URL 不匹配。

部分缓解方法是在 quarkus 应用程序或属性中设置此配置:

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-Forwarded-Host

当我这样做时,Quarskus 确实将外部 URL 发送给了 Google。但它发送内部端口而不是外部端口。这意味着如果外部 URL 是 https://gold.com 并且内部 URL 是 https://internal.products.io:9443,Quarkus 将 https://gold.com:9443 发送给 Google .

所以我的问题是如何强制 Quarkus 发送外部端口?我知道 Apache 有以下可以转发的标头:

X-Forwarded-Host
X-Forwarded-Port
X-Forwarded-Proto

有没有办法告诉 Quarkus 使用代理通过标头提供的端口?

apache2 quarkus quarkus-oidc
1个回答
0
投票

我确实配置了 Apache 来转发端口。我以某种方式相信它会像处理主机名一样自动转发端口。这是一个错误的假设。

所以我将它添加到我的 apache 虚拟主机中:

RequestHeader set X-Forwarded-Port "443"

这适用于上面描述的 Quarkus 配置。

© www.soinside.com 2019 - 2024. All rights reserved.