更改RedirectUri,Nginx和ASP.NEt Core

时间:2017-08-28 16:44:42

标签: c# asp.net asp.net-mvc nginx

我正在开发一个包含ASP.NET Core 2Nginx的网站。我想添加Google身份验证。

服务器是Linux,运行Nginx,启用SSL。 ASP.NET在http://localhost:5000/上运行,Nginx使用反向代理来访问。

问题是,当我尝试访问Google时,URL架构为http,因为ASP.NET在http中运行。我收到错误说"错误:redirect_uri_mismatch"因为https是在Google方面定义的。

我已尝试OnRedirectToAuthorizationEndpoint事件并更改了RedirectUri但未成功。

我还尝试将CallbackPath更改为完整网址,但该网址必须以/开头;它需要相对路径。

我使用的套餐是:Microsoft.AspNetCore.Authentication.Google (2.0.0)

有什么建议吗?

服务代码是:

services.AddAuthentication()
    .AddGoogle(options =>
    {
        options.ClientId = Configuration["Authentication:Google:ClientId"];
        options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
        options.CallbackPath = "/Login/GoogleCallback";
        options.Events.OnRedirectToAuthorizationEndpoint += context =>
        {
            context.Properties.RedirectUri = context.Properties.RedirectUri.Replace("http://", "https://");
            return Task.FromResult(0);
        };
    });

1 个答案:

答案 0 :(得分:0)

将这些文件添加到配置文件/etc/nginx/sites-available/default后,它就会开始工作。

proxy_set_header  X-Real-IP          $remote_addr;
proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
proxy_set_header  X-Forwarded-Proto  $scheme;