C# ASP.NET Core 3中的多种身份验证类型
对于网络用户,我正在进行基于Cookie的身份验证,对于物联网设备,我正在进行JWT身份验证。但我也有几个API,Web和IOT用户都使用 如果存在Cookie,我希望它使用Cookie/Identity Auth,如果存在bearer,则使用JWT Auth。实际上,它可能必须同时尝试这两种方法 我可以让它们单独工作,即cookieauth或jwtauth,但不能同时工作 下面是我从.NETCore2.2应用程序中获得的代码片段,它的工作方式正是我所需要的C# ASP.NET Core 3中的多种身份验证类型,c#,asp.net-identity,asp.net-core-3.0,C#,Asp.net Identity,Asp.net Core 3.0,对于网络用户,我正在进行基于Cookie的身份验证,对于物联网设备,我正在进行JWT身份验证。但我也有几个API,Web和IOT用户都使用 如果存在Cookie,我希望它使用Cookie/Identity Auth,如果存在bearer,则使用JWT Auth。实际上,它可能必须同时尝试这两种方法 我可以让它们单独工作,即cookieauth或jwtauth,但不能同时工作 下面是我从.NETCore2.2应用程序中获得的代码片段,它的工作方式正是我所需要的 services.AddAuthen
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie()
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = Configuration["JwtIssuer"],
ValidAudience = Configuration["JwtIssuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"])),
};
});
我在.NETCore2.2中也有这个
services.AddMvc(config =>
{
var defaultPolicy = new AuthorizationPolicyBuilder(new[] { JwtBearerDefaults.AuthenticationScheme, IdentityConstants.ApplicationScheme, CookieAuthenticationDefaults.AuthenticationScheme })
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(defaultPolicy));
});
有人能帮助我们了解.Net Core 3中发生了什么变化,以及我如何解决这个问题吗