外部服务登录链接ASP核心

时间:2018-07-07 07:07:26

标签: linux asp.net-core oauth

我对我的asp核心应用程序使用外部身份验证。在localhost上,一切正常,但是当我尝试在ubuntu服务器上部署项目时,出现问题。 我的网站在Linux服务器上的5001端口上工作,当我调用Challenge方法将用户重定向到登录页面时,它返回http://localhost:5001/signin-google 并且不起作用,因为google无法将结果返回到从Internet本地主机无法访问的结果(当它位于计算机上的localhost上时,我可以从我的计算机中调用该项目,而当它位于服务器上的localhost上时,不能从该项目中调用该项目)。我试图像这样options.CallbackPath = "https://myproject.com/signin-google";来明确定义auth url,但是options.CallbackPath需要以'/'开头的值。那我该怎么办?

已更新

试图自己设置请求Cookie:

.AddGoogle(options =>
                {
                    options.ClientId = Configuration["Authentication:Google:ClientId"];
                    options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
                    options.Events = new OAuthEvents
                    {
                        OnRedirectToAuthorizationEndpoint = async context =>
                        {
                            context.Request.Headers.Remove("Scheme");
                            context.Request.Headers.Add("Scheme", "https");
                            context.Request.Headers.Remove("Host");
                            context.Request.Headers.Add("Host", "myhost.com");
                        }
                    };
                    options.CallbackPath = "/signin-google";

但是在挑战之后,没有重定向到Google身份验证页面

1 个答案:

答案 0 :(得分:0)

我已经意识到。我只需要像这样配置nginx:

 server {
                listen 80;
                server_name example.com;
                location / {
                        proxy_pass http://localhost:5001;
                        proxy_http_version 1.1;
                        proxy_set_header  X-Real-IP $remote_addr;
                        proxy_set_header  X-Forwarded-Proto http;
                        proxy_set_header  X-Forwarded-For $remote_addr;
                        proxy_set_header  X-Forwarded-Host $remote_addr;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection keep-alive;
                        proxy_set_header Host $host;
                        proxy_cache_bypass $http_upgrade;
                }

并添加了

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

仅此而已