新文章 网摘 文章 随笔 日记

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

 

posted @ 2022-10-22 11:22  岭南春  阅读(49)  评论(0)    收藏  举报