【发布时间】:2019-02-24 16:25:33
【问题描述】:
假设我们使用“Abc”模式和相应的处理程序进行身份验证,一切都很好。我们能够简单地保护控制器
[Authorize(AuthenticationSchemes = "Abc", Roles = "admin")] 属性
但现在似乎需要能够使用“Xyz”模式保护控制器的端点(因此请求应该对应于两种方案的要求)。
所以,我认为注册新的模式和处理程序就足以能够使用[Authorize]如下并接收AND逻辑:
[Authorize(AuthenticationSchemes = "Abc", Roles = "admin")]
[Authorize(AuthenticationSchemes = "Xyz")]
public class UserController : ControllerBase
{
}
但对控制器的有效请求会导致“禁止”响应状态(请注意,即使在“未授权”)。
我还觉得有趣的是,当我们在操作方法而不是控制器上应用 [Authorize(AuthenticationSchemes = "Xyz")] 时 - 一切都按预期工作。
P.S:Startup 中的 MvcOptions.AllowCombiningAuthorizeFilters 已设置为 false。
我猜测当两个属性都存在于同一(本例中为控制器)级别时,它仍然会以某种方式合并授权逻辑。
有人知道我错过了什么吗? 可能我认为方向完全错误,并且有一种适当的方法来进行多模式身份验证 所以,请随时提供您的想法。
【问题讨论】:
标签: authentication asp.net-core-2.1 authorize-attribute multiple-schema