访问控制框架之Casbin.NET简介

shape1
shape2
shape3
shape4
shape5
shape5
  • admin
  • 7月 18, 2019
  • 2条评论
官网:https://casbin.org/
开源仓库源码:https://github.com/casbin
QQ群:546057381
官方论坛:https://forum.casbin.com/

Casbin.NET是一个功能强大、效率高的.NET (C #)项目的开源访问控制库,是Casbin的其中一个语言分支。它支持基于各种访问控制模型实施授权。

Casbin支持的所有语言
在这里插入图片描述支持的模型:

  1. ACL(访问控制列表)。
  2. ACL和超级用户。
  3. 没有用户的ACL:对于没有身份验证或用户登录的系统特别有用。
  4. 不含资源的ACL:有些场景可能会通过使用诸如==write-article==、==read-log==等权限来针对某种类型的资源,而不是单个资源。它不控制对特定文章或日志的访问。
  5. RBAC(基于角色的访问控制)。
  6. 具有资源角色的RBAC:用户和资源都可以同时具有角色(或组)。
  7. 带域/租户的RBAC:用户可以为不同的域/租户拥有不同的角色集。
  8. ABAC(基于属性的访问控制):类似于resource的语法糖。Owner可用于获取资源的属性。
  9. RESTful:支持/res/*、/res/:id等路径,支持HTTP方法GET、POST、PUT、DELETE等。
  10. deny -override:同时支持allow和deny授权,deny覆盖allow。
  11. 优先级:策略规则可以像防火墙规则一样进行优先级排序。

原理
在Casbin中,一个访问控制模型基于PERM元模型(策略、效果、请求、Matchers)抽象到一个CONF文件中。因此,切换或升级项目的授权机制就像修改配置一样简单。您可以通过组合可用的模型来定制自己的访问控制模型。例如,您可以在一个模型中同时获得RBAC角色和ABAC属性,并共享一组策略规则。
Casbin中最基本、最简单的模型是ACL。ACL的模型CONF为:

#Request definition

[request_definition]

r = sub, obj, act #Policy definition

[policy_definition]

p = sub, obj, act Policy effect

[policy_effect]

e = some(where (p.eft == allow)) Matchers

[matchers]

m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

ACL模型的策略示例如下:

p, alice, data1, read
p, bob, data2, write

这表示:

  • alic可以读取data1
  • bob可以写data2

  • 我们还通过在末尾添加’\’来支持多行模式:
#Matchers

[matchers]

m = r.sub == p.sub && r.obj == p.obj \ && r.act == p.act

此外,如果你使用的是ABAC,你可以在Casbin golang版(目前不支持jCasbin和Node-Casbin)中尝试如下操作符:

#Matchers

[matchers]

m = r.obj == p.obj && r.act == p.act || r.obj in (‘data2’, ‘data3’)

但是您应该确保数组的长度大于1,否则会引起报警。
对于更多的操作符,您可以查看govaluate

文档
https://casbin.org/docs/en/overview

2 Comments

  1. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s

Jon Smith进行回复 取消回复

您的电子邮箱地址不会被公开。

Top