AddAuthenticationSchemes使用OR,是否可以使用AND?

问题描述

我有以下代码

services.AddAuthorization(options =>
{
    // Other schemes here

    var userAndApplicationJwtAuthPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .AddAuthenticationSchemes("UserJwt")
        .AddAuthenticationSchemes("ApplicationJwt")
        .Build();
     options.AddPolicy("UserAndApplicationAuthentication",userAndApplicationJwtAuthPolicy);
});

关键部分是AddAuthenticationScheme调用

使用此代码,如果我发送UserJwt或ApplicationJwt,它将把调用传递给控制器​​。除非同时提供,否则我需要返回401。实际上,我正在寻找一种在一项政策中强制执行这两种方案的方法。 (请注意,如果同时提供了两者,则会为两者都创建一个ClaimsPrinciple。)

我希望我可以打电话给AddRequirement或类似的东西来强制执行这两个问题。

是否可以将AddAuthenticationSchemes更改为需要两种方案?

注意:我也尝试过.AddAuthenticationSchemes("UserJwt","ApplicationJwt"),但仍然可以执行OR。
注意2:我知道我可以为每个策略添加单独的策略,然后在控制器上使用两个[Authorize(Policy = "PolicyName")]属性(每个策略一个)。但是,我希望将[Authorize]认值同时作为这两种方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)