asp.net身份验证.net核心2.1



我遇到了一个.net核心2.1 MVC应用程序的问题,该应用程序在nginx web服务器后面使用kestrel在Linux盒子上运行。此环境在负载平衡器后面有2个web服务器。

问题是用于身份验证的.AspNetCore.Identity.Application cookie。我能够进行身份验证并重定向到装饰有的控制器

[授权]

属性(有时(。然而,在下一次请求时,饼干不见了,我得到了401。当我们从混合中取出一台服务器,并将所有流量强制到一台服务器时,一切都如预期的那样工作。

使用Forms auth,指定机器密钥也可以解决同样的问题。net核心使用身份的等价物是什么?我发现了一些我脑子里想不通的链接。他们提到做这样的事情:

services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});

我不知道这是否能解决问题,我不想在不知道他们做什么的情况下尝试。

我怀疑您的经历与数据保护有关。

ASP.NET核心cookie身份验证依赖于数据保护层来加密和解密存储在cookie中的数据。默认情况下,每台机器上都会创建一个本地密钥,这意味着它们无法解密另一台机器创建的cookie,如官方文档所述。

我建议您浏览数据保护配置文档页面并评估您的选项。其中之一是将密钥存储在UNC共享上,并使用证书对其进行加密(本段中的所有链接都链接到同一页面的不同部分(。

最新更新