「付费」Casbin实战教程:ABAC控制模型授权策略设计与实践

前言

一般来说,在设计与人有交互的系统时,如果涉及到多用户能对同类资源进行操作的时候,就会有区分权限的需求了。

最简单的例子莫过于普通用户与管理员,两者进行操作的客户端不一致,普通用户可以用专门的 APP 或者小程序进行登陆操作,而管理员却有一个专门的管理后台,能够进行一些影响比较大操作:审核内容、发布公告、退款等等。

而即使是管理员,在管理后台中,也会有不同的权限,比如编辑管理员可以被授权审核内容,而退款却需要财务或者主管之类的管理员才能被授权进行操作。

这里需要强调下,认证(Authentication)授权(Authorization) 是两个不同的概念,虽然他们的英文单词很像。

认证的时候,只有能不能登录这种说法,在 Web 程序中对应的是 HTTP Status 401 错误,而授权认证则是登录之后才会进行的操作,对系统内的资源,你是不是有权限进行操作,没有的话对应的是 HTTP Status 403 错误。

权限认证分类

下面我们来说说几种比较流行的权限模型。

ACL

ACL(Access Control List)访问控制列表

这种模型非常简单,即直接将用户与权限进行一一对应

Alice -> read:article, update:article
Bob   -> read:article, del:article

通过这张 ACL 表,在程序中可以直接对响应的用户进行权限判断,实现起来也非常简单。权限对应行为+资源,即每一种权限对应可以对什么资源进行什么样的操作。

在设计 Web 程序中的 RESTful 接口的时候,权限就可以设计为:

Alice -> GET /article, PUT /article
Bob   -> GET /article, DELETE /article

只是,这个模型缺点也非常明显:每次在系统中添加新用户的时候,必须给他全部设置一遍权限,非常麻烦,在资源类别少的时候,可以忍受,随着业务的发展,同事越来越多,资源类别也越来越多的时候,管理员的工作就会非常痛苦。

原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/49826.html

Like (0)
网络技术联盟站的头像网络技术联盟站
Previous 2024年5月12日
Next 2024年5月12日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注