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");
}