如何使用Microsoft.AspNetCore.Authentication.Google?

时间:2016-07-01 19:52:31

标签: asp.net-mvc nginx asp.net-identity google-authentication

我正在使用Google身份验证创建AspNetCore应用程序。我正在Ubuntu服务器上的nginx反向代理后面部署这个应用程序。 几乎一切正常,但我遇到了回调网址的问题。

在Google开发者控制台中,我将http://localhost:5000/signin-google设置为授权重定向URI。这可以按预期工作,并允许我从工作站运行时使用Google身份验证。

对于制作,我将https://myserver/signin-google设置为授权重定向URI。但是,当我尝试使用它时,我从accounts.google.com收到错误http://myserver/signin-google(注意缺少的s)未获得授权。那是真的;它不应该被授权,我的服务器甚至不响应端口80的请求。

如何告知身份验证中间件我需要使用HTTPS作为回调URL?

1 个答案:

答案 0 :(得分:5)

我终于明白了。

步骤1:确保Nginx正在发送必要的转发标头,例如:

server {
    # other stuff ...
    location / {
        # other stuff ...
        proxy_set_header X-Forwarded-Proto $scheme;
        # you could also just hardcode this to https if you only accept https
    }
}

步骤2:默认情况下,AspNetCore将忽略这些标头。安装处理它的中间件:

PM> Install-Package Microsoft.AspNetCore.HttpOverrides

步骤3:在Configure功能中,应用中间件。

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedProto
});

这应该正确地将Context.Request.Scheme值更改为https,这将导致身份验证中间件生成正确的redirect_uri