访问控制框架之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

发表评论

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

Top