.Net Core 2.0多个身份验证方案-默认方案覆盖所有

时间:2019-01-16 18:10:32

标签: c# asp.net .net asp.net-core

我有两种可以单独使用的身份验证方案。当我将两者放在一起并定义默认架构时,默认架构会覆盖我在控制器中设置的架构。

这是我的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。

我在做什么?如何配置默认方案?

0 个答案:

没有答案