C# 当提供非默认模式时,如何禁用默认身份验证方案
我的应用程序中有两个身份验证方案C# 当提供非默认模式时,如何禁用默认身份验证方案,c#,authentication,asp.net-core,C#,Authentication,Asp.net Core,我的应用程序中有两个身份验证方案 services.AddAuthentication("default") .AddJwtBearer("default", options => { // some options }) .AddJwtBearer("non-default", options => { // some other options }); 我们的想法是对大多数控制器使用默认值,并且当需
services.AddAuthentication("default")
.AddJwtBearer("default", options =>
{
// some options
})
.AddJwtBearer("non-default", options =>
{
// some other options
});
我们的想法是对大多数控制器使用默认值,并且当需要非默认值时,使用[Authorize(AuthenticationSchemes=“non-default”)]
明确提及所需的模式。问题是,总是调用默认模式,即使设置了非默认模式。它运行并失败,然后正确的模式运行并成功。但这会导致日志中充满“验证令牌失败”消息。有没有办法禁用默认模式
我使用的是net core 2.2,但考虑到要升级到3.1。我发现解决方案不是提供默认的身份验证方法,而是提供默认的授权策略
services.AddAuthentication()
.AddJwtBearer("defaultScheme", options =>
{
// some options
})
.AddJwtBearer("nonDefaultScheme", options =>
{
// some other options
});
services.AddAuthorization(opts =>
{
opts.DefaultPolicy = new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes("defaultScheme")
.RequireAuthenticatedUser()
.Build();
opts.AddPolicy("non-default", policy => policy
.AddAuthenticationSchemes("nonDefaultScheme")
.RequireAuthenticatedUser());
});
在此之后,
[Authorize]
和[Authorize(“非默认”)]
都正常工作,只调用了其中一个身份验证方案。这为我的问题指明了新的方向!谢谢你绕回来把你发现的东西放进去!