Apache 反向代理中的 Google OAuth 重定向 Uri

Jan*_*nse 5 apache google-oauth asp.net-core

我正在尝试使用 Apache 作为反向代理来设置 Web 服务器,连接到由 kestrel 托管的 ASP.NET CORE Web 应用程序。我已按照此处的教程进行操作:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache ?view=aspnetcore-3.1

\n

该网站使用 Google Calendar Api 来获取用户日历信息。当我通过 Visual Studio 使用 Kestrel 托管它时,效果很好。但是,当我尝试通过网络服务器进行身份验证并选择 Google 帐户时,我会被重定向到

\n

127.0.0.1:5000/signin-oidc

\n

这不是想要的结果。(127.0.0.1:5000 配置为 Apache 的 ProxyPass 和 ProxyReverse)。

\n

由于当我在没有 Apache 反向代理的情况下运行时,Web 应用程序可以正常工作,因此我怀疑 apache 配置存在一些问题。但是,这也可能是我正在使用的Google.Apis.Auth.AspNetCore3库的问题。我使用集成测试作为如何设置startup.cs以及如何发出Api请求的指南。

\n

编辑:

\n

所以我询问了我\xe2\x80\x99m使用的库的开发人员。重定向 uri 绑定到我监听的 kestrel 端点。问题在这里:https://github.com/googleapis/google-api-dotnet-client/issues/1680

\n

因此,只有当我能够以某种方式让 kestrel 知道我的服务器的 \xe2\x80\x9cactual\xe2\x80\x9d 域名或公共 IP 时,它才能起作用......根据我的研究,这似乎几乎是不可能的。我将研究授权和身份验证的其他实施选项。

\n

Jan*_*nse 3

找到了解决方案!

在我无尽的搜索和新手中,我发现我已经删除了 apache 的 VirtualHost 的前向标头。我还添加了 ProxyPreserveHost 选项。

我更改了虚拟主机以包括

RequestHeader set X-Forwarded-Proto https
ProxyPreserveHost On
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
ServerName www.example.com
ServerAlias *.example.com
Run Code Online (Sandbox Code Playgroud)