歡迎來到 Dotnet 工具箱!在這裡,你可以發現各種令人驚喜的開源項目!
>>> 推薦關注 <<<
Casbin 簡介
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 提供對各種程式設計語言的支援,可以內建到任何項目和工作流程中:
它是怎麼運作的?
在Casbin中,基于PERM元模型 (Policy, Effect, Request, Matchers)将一個通路控制模型抽象成一個CONF檔案。
是以切換或更新項目的授權機制就像修改配置一樣簡單。
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
{
// 拒絕請求,抛出異常
}
項目位址
https://github.com/casbin/Casbin.NET
分享
點收藏