我有两种可以单独使用的身份验证方案。当我将两者放在一起并定义默认架构时,默认架构会覆盖我在控制器中设置的架构。
这是我的startup.cs:
services.AddAuthentication(options =>
{
//options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddIdentityServerAuthentication(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.Authority = Configuration["Authentication:Domain"];
options.RequireHttpsMetadata = false;
options.ApiName = Configuration["Authentication:ApiName"];
options.ApiSecret = Configuration["Authentication:ApiSecret"];
})
.AddIdentityServerAuthentication("AdminAuth", options =>
{
options.Authority = Configuration["AuthenticationAdmin:Domain"];
options.RequireHttpsMetadata = false;
options.ApiName = "api_name";
});
在我的控制器上,我正在设置方案:
[Route("myRoute")]
[Authorize(AuthenticationSchemes = "AdminAuth")]
public class MyRouteController : ControllerBase
{
在其他婴儿推车上,我没有设置方案:
[Route("myOtherRoute")]
[Authorize]
public class MyOtherRouteController : ControllerBase
{
如果在statup.cs上我为MyOtherRouteController定义了“ options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme”,而无需指定AuthenticationSchemes,则当我调用“ MyRouteController”控制器时,该应用将尝试进行身份验证以抛出DefaultScheme。
我在做什么?如何配置默认方案?