【问题标题】:Google OAuth Redirect Uri in Apache Reverse ProxyApache 反向代理中的 Google OAuth 重定向 Uri
【发布时间】:2021-01-31 08:26:41
【问题描述】:

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

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

127.0.0.1:5000/signin-oidc

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

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

编辑:

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

因此,只有当我能够以某种方式让 kestrel 知道我的服务器的“实际”域名或公共 IP 时,它才能工作……根据我的研究,这似乎很接近,如果不是不可能的话。我将研究授权和身份验证的其他实现选项。

【问题讨论】:

  • 您是否在 Google 中使用 OAuth2 授权代码流?如果是这样,您使用什么作为redirect_uri 查询参数?您的网络服务器可能正在使用一些内部主机值而不是您的公共主机值。
  • @TreyGriffith 我使用的库控制整个挑战(不需要帐户控制器来发出挑战)。所以我会假设它也对流量负责。似乎 localhost:5000/signin-oidc 是默认的 rediret_uri。我可以使用 CallbackPath 将其更改为 localhost:5000/Controller/Action。但是,从进一步研究来看,Google 登录似乎更有利

标签: apache asp.net-core google-oauth


【解决方案1】:

找到了解决办法!

在我没完没了的搜索和新手中,我发现我已经删除了我的 VirtualHost for apache 的转发标头。我还添加了 ProxyPreserveHost 选项。

我将虚拟主机更改为包含

RequestHeader set X-Forwarded-Proto https
ProxyPreserveHost On
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
ServerName www.example.com
ServerAlias *.example.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2014-06-24
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2014-03-17
    • 2022-01-08
    相关资源
    最近更新 更多