推荐一个强大高效的开源 .NET 访问控制组件

Casbin是一个高效的访问控制库,支持ACL,RBAC,ABAC等多种模型。它能定义访问策略、管理角色映射,但不处理用户认证。Casbin.NET提供了对PERM元模型的支持,简化了授权机制的切换和升级。文章还介绍了如何在.NET项目中使用Casbin进行权限管理。
摘要由CSDN通过智能技术生成

b4ab892939a7001268f19b4c4a3b830f.png

bf739cd64e8a193225cf3ff58898954d.gif

45b9f5008aafe3e25b6f1b13fe7503f2.png

欢迎来到 Dotnet 工具箱!在这里,你可以发现各种令人惊喜的开源项目!

>>> 推荐关注 <<<

Casbin 简介

2ad0ad8ebb9ea90a3cdefef46d74473e.png

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. 支持内置超级用户,例如rootadministrator。超级用户可以在没有明确许可的情况下做任何事情。

  5. 5. 内置多种运算符,支持规则匹配。例如,keyMatch可以将资源键映射/foo/bar到模式/foo*

Casbin 不做什么

  1. 1. 用户身份验证。

  2. 2. 管理用户和角色列表。

Casbin 支持的语言

Casbin 提供对各种编程语言的支持,可以集成到任何项目和工作流程中:

14e3f7a96085988edb8749723cba20fe.png

它是怎么运行的?

在Casbin中,基于PERM元模型 (Policy, Effect, Request, Matchers)将一个访问控制模型抽象成一个CONF文件。

0b7f63179325efc93bc94488072d00ab.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. 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
{
    // 拒绝请求,抛出异常
}

往期推荐:

JIEJIE.NET - 强大的 .NET 代码混淆工具

Dots - 更友好的 .NET SDK 管理器

DotNetCorePlugins- 动态加载和卸载 .NET 程序插件

分布式唯一 ID 生成器 - IDGen

开源力作!使用 Blazor 和 C# 管理 K8s

项目地址

https://github.com/casbin/Casbin.NET

61f47249374792e5df479d97acec21cb.png

5c4b1f162db7777609e39f9217e396de.png

分享

1d9bbbca529a27fd4c39a6991103c033.png

点收藏

ee1cbe8b6d8e8385a7f4b0ff57e9924c.png

点点赞

e39a077569c14cfbe0fd90a4bd658b90.png

点在看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值