ASP.NET Web API中基于Scope的授权
我热衷于分离授权逻辑和业务逻辑,这就是为什么我更喜欢基于声明的授权管理器方法。这也是我编写声明授权过滤器的原因。
如果您不想走完全成熟的授权管理器的路线,而是使用OAuth2中的作用域概念(请参阅此处),这里有一个简化的方法:
public class IdentityController : ApiController
{
/// <summary>
/// Returns the claims of the current principal
/// </summary>
[Scope(“read”)]
public IEnumerable<ViewClaim> Get()
{
var principal = Request.GetClaimsPrincipal();
return ViewClaims.GetAll(principal);
}
/// <summary>
/// Update identity data
/// </summary>
[Scope(“write”, “update”]
public void Put()
{
}
}
[Scope] 属性是一个授权筛选器,它仅检查是否存在具有指定值的范围声明。
这是一种非常简单的粗粒度授权方法,可以与来自(我们的)授权服务器的访问令牌很好地结合在一起。如果您愿意,当然可以将其与授权管理器混合使用。
Scope based Authorization in ASP.NET Web API | leastprivilege.com
浙公网安备 33010602011771号