欢迎来到 Dotnet 工具箱!在这里,你可以发现各种令人惊喜的开源项目!
>>> 推荐关注 <<<
Casbin 简介
![null 2ad0ad8ebb9ea90a3cdefef46d74473e.png](https://i-blog.csdnimg.cn/blog_migrate/8c22b74fa59674b34e00e90e90eb420a.png)
Casbin 是一个强大高效的开源访问控制库,支持各种 访问控制模型 , 如 ACL, RBAC, ABAC 等。
我们希望可以让指定的主体 subject,可以访问指定的资源 object,访问可以是读和写。这就是 Casbin 使用最广泛的方式。也称为 { subject, object, action }
流程。
另外,Casbin 能够处理标准流程以外的许多复杂授权场景,还支持添加 RBAC 和 ABAC 等。
Casbin 能做什么?
1. { subject, object, action } 定义访问策略,支持允许和拒绝授权。
2. 处理访问控制模型和策略的存储。
3. 管理角色-用户映射和角色-角色映射(也称为 RBAC 中的角色层次结构)。
4. 支持内置超级用户,例如
root
或administrator
。超级用户可以在没有明确许可的情况下做任何事情。5. 内置多种运算符,支持规则匹配。例如,
keyMatch
可以将资源键映射/foo/bar
到模式/foo*
。
Casbin 不做什么
1. 用户身份验证。
2. 管理用户和角色列表。
Casbin 支持的语言
Casbin 提供对各种编程语言的支持,可以集成到任何项目和工作流程中:
![null 14e3f7a96085988edb8749723cba20fe.png](https://i-blog.csdnimg.cn/blog_migrate/374fe1b38310edcff79bfff0fd7ee028.png)
它是怎么运行的?
在Casbin中,基于PERM元模型 (Policy, Effect, Request, Matchers)将一个访问控制模型抽象成一个CONF文件。
![null 0b7f63179325efc93bc94488072d00ab.png](https://i-blog.csdnimg.cn/blog_migrate/aa47275724074895cb9b0ef9265d7a1b.png)
所以切换或升级项目的授权机制就像修改配置一样简单。
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
它的意思是:
• alice 可以读取 data1.
• bob 可以写入 data2。
如何使用?
首先,需要安装 Casbin.NET。
dotnet add package Casbin.NET
1. 使用模型文件和策略文件新建一个 Casbin 执行器:
var e = new Enforcer("path/to/model.conf", "path/to/policy.csv")
注意:这里您还可以使用数据库中的策略而不是文件来初始化执行器。
1. 在进行资源访问的时候,使用下面的授权代码。
var sub = "alice"; # 想要访问资源的用户
var obj = "data1"; # 将要被访问的资源
var act = "read"; # 用户对资源进行的操作
if (await e.EnforceAsync(sub, obj, act))
{
// 允许alice读取data1
}
else
{
// 拒绝请求,抛出异常
}
往期推荐:
DotNetCorePlugins- 动态加载和卸载 .NET 程序插件
项目地址
https://github.com/casbin/Casbin.NET
分享
点收藏
点点赞
点在看