天天看點

推薦一個強大高效的開源 .NET 通路控制元件

作者:opendotnet
推薦一個強大高效的開源 .NET 通路控制元件
推薦一個強大高效的開源 .NET 通路控制元件
推薦一個強大高效的開源 .NET 通路控制元件

歡迎來到 Dotnet 工具箱!在這裡,你可以發現各種令人驚喜的開源項目!

>>> 推薦關注 <<<

Casbin 簡介

推薦一個強大高效的開源 .NET 通路控制元件

Casbin 是一個強大高效的開源通路控制庫,支援各種 通路控制模型 , 如 ACL, RBAC, ABAC 等。

我們希望可以讓指定的主體 subject,可以通路指定的資源 object,通路可以是讀和寫。這就是 Casbin 使用最廣泛的方式。也稱為

{ subject, object, action }

流程。

另外,Casbin 能夠處理标準流程以外的許多複雜授權場景,還支援添加 RBAC 和 ABAC 等。

Casbin 能做什麼?

  1. 1. { subject, object, action } 定義通路政策,支援允許和拒絕授權。
  2. 2. 處理通路控制模型和政策的存儲。
  3. 3. 管理角色-使用者映射和角色-角色映射(也稱為 RBAC 中的角色層次結構)。
  4. 4. 支援内置超級使用者,例如

    root

    administrator

    。超級使用者可以在沒有明确許可的情況下做任何事情。
  5. 5. 内置多種運算符,支援規則比對。例如,

    keyMatch

    可以将資源鍵映射

    /foo/bar

    到模式

    /foo*

Casbin 不做什麼

  1. 1. 使用者身份驗證。
  2. 2. 管理使用者和角色清單。

Casbin 支援的語言

Casbin 提供對各種程式設計語言的支援,可以內建到任何項目和工作流程中:

推薦一個強大高效的開源 .NET 通路控制元件

它是怎麼運作的?

在Casbin中,基于PERM元模型 (Policy, Effect, Request, Matchers)将一個通路控制模型抽象成一個CONF檔案。

推薦一個強大高效的開源 .NET 通路控制元件

是以切換或更新項目的授權機制就像修改配置一樣簡單。

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. 1. 使用模型檔案和政策檔案建立一個 Casbin 執行器:
var e = new Enforcer("path/to/model.conf", "path/to/policy.csv")           

注意:這裡您還可以使用資料庫中的政策而不是檔案來初始化執行器。

  1. 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

推薦一個強大高效的開源 .NET 通路控制元件

分享

推薦一個強大高效的開源 .NET 通路控制元件

點收藏

推薦一個強大高效的開源 .NET 通路控制元件

繼續閱讀