【发布时间】:2013-08-28 15:18:57
【问题描述】:
消息称,如果ClaimsAuthorizationManager 的CheckAccess 的子类返回false,根据框架设计,它会引发安全异常。
如果我想用(例如)[ClaimsPrincipalPermission(SecurityAction.Demand, Operation="Read", Resource="Something")] 来装饰 ApiController 的函数,似乎没有办法捕捉到这个错误。
我已经创建了一个示例 AuthorizationManager,派生出 ClaimsAuthorizationManager,并在 web.config 中注册了它。此配置部分有效。
public class AuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
return false; // just to show that it will throw the security exception
}
}
因此,我将授权设置为无论如何都会失败,但我想向用户返回 401 响应而不是那个“侵入性”500(安全异常返回为内部服务器错误)。
似乎没有人对此有任何答案,而且我们似乎只能接受 500 人向客户传达未经授权的访问。
【问题讨论】:
-
您找到更好的解决方案了吗?当 500 显然是 401 时,返回 500 感觉是错误的。认为我最好实现自定义 AuthenticationFilter,因为我可以轻松地从其中一个返回 401。
标签: asp.net asp.net-mvc authentication authorization claims-based-identity