我正在开发一个包含ASP.NET Core 2
和Nginx
的网站。我想添加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);
};
});
答案 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;