问题描述
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 (将#修改为@)