Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net identity 如何将核心ASP.Net标识、负载平衡器和Identity.External一起使用?_Asp.net Identity_Asp.net Core 2.0_F5 - Fatal编程技术网

Asp.net identity 如何将核心ASP.Net标识、负载平衡器和Identity.External一起使用?

Asp.net identity 如何将核心ASP.Net标识、负载平衡器和Identity.External一起使用?,asp.net-identity,asp.net-core-2.0,f5,Asp.net Identity,Asp.net Core 2.0,F5,我在组合几个库和负载平衡环境以生成成功的登录功能时遇到困难 我正在使用Microsoft.AspNetCore.Identity.EntityFramework2.0.3和一个自定义SAML实现,它使用Microsoft.AspNetCore.Identity.SignInManager.GetExternalLoginInfoAsync()获取登录信息。在本地,即使在IIS中,所有这些都可以很好地协同工作。但在部署此功能的服务器上,它不起作用GetExternalLoginInfoAsync(

我在组合几个库和负载平衡环境以生成成功的登录功能时遇到困难

我正在使用
Microsoft.AspNetCore.Identity.EntityFramework
2.0.3和一个自定义SAML实现,它使用
Microsoft.AspNetCore.Identity.SignInManager.GetExternalLoginInfoAsync()
获取登录信息。在本地,即使在IIS中,所有这些都可以很好地协同工作。但在部署此功能的服务器上,它不起作用
GetExternalLoginInfoAsync()
无法进行身份验证,迫使身份系统重定向到登录页面,并且不允许继续进行用户身份验证。不过,它在负载平衡的环境中间歇性地工作。可能有1%的时间是有效的,主要是在重新部署代码之后。然后它又回到不工作的状态

这是我在将其部署到负载平衡服务器时在日志中看到的内容:

AuthenticationScheme:“Identity.External”未通过身份验证

这是我的通用标识启动:

 services.AddIdentity<ApplicationUser, IdentityRole>()
         .AddEntityFrameworkStores<ApplicationDbContext>()
         .AddDefaultTokenProviders();
在本地,这不会返回null,并且
info
用于登录到ASP.Net标识。在服务器上,它返回null


我如何使
getexternallogininfosasync()
在本地正常工作的情况下,在服务器上100%工作,负载平衡与否?

想想你会在这里挣扎吗。。如果你想登录facebook和google之类的网站,我想他们要求你有一个https连接,因为个人信息被传回,所以它必须被加密。谢谢,不,这是一个SAML系统,在组织内部,但在这个应用程序外部。流程是:客户端->负载平衡器->ASP.Net应用程序->负载平衡器->客户端->SAML系统(登录)->客户端->负载平衡器->ASP.Net应用程序。ASP.Net应用程序和负载平衡器之间的通信是在http上进行的,其他所有内容都是https。身份验证是如何进行的。。您没有使用oAuth吗?你还有其他代码要共享吗?你确定问题出在https/http上吗?在传递http请求之前,负载平衡器是否会删除一些头/cookie信息?我已经对这个问题进行了大量编辑,并添加了更多代码。https似乎不是问题,因为我们添加了证书并更改了绑定。负载平衡器管理员说它没有删除任何cookie。我会和提琴手再核对一下。
 var info = await _signInManager.GetExternalLoginInfoAsync();
 if (info == null)
 {
     _logger.LogWarning("Null login info");
     return RedirectToPage("./Login");
 }