跳到主要内容

简介

Casbin 是一个高效的开源访问控制库,用于实施授权并支持多种访问控制模型。

实现基于规则的访问控制非常简单:在任何适合您需求的格式的 policy 文件中定义主体、对象和允许的操作。此模式在所有 Casbin 实现中保持一致。model 文件赋予开发人员和管理员对授权逻辑的完全控制权——包括布局、执行流程和条件。Enforcer 组件根据您的模型和策略评估传入的请求。

Casbin 支持的语言​

Casbin 提供对多种编程语言的原生支持,使您可以将其集成到广泛的项目和工作流中:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
生产就绪生产就绪生产就绪生产就绪
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
生产就绪生产就绪生产就绪生产就绪

各语言功能集​

我们致力于在所有语言实现之间保持功能对等;目前尚未实现完全的统一。

功能GoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
执行✅✅✅✅✅✅✅✅✅✅✅✅
RBAC✅✅✅✅✅✅✅✅✅✅✅✅
ABAC✅✅✅✅✅✅✅✅✅✅✅✅
扩展 ABAC (eval())✅✅✅✅✅✅❌✅✅✅✅✅
适配器✅✅✅✅✅✅✅✅✅✅✅❌
管理 API✅✅✅✅✅✅✅✅✅✅✅✅
RBAC API✅✅✅✅✅✅✅✅✅✅✅✅
批量 API✅✅✅✅✅✅❌✅✅✅❌❌
过滤适配器✅✅✅✅✅✅❌✅✅✅❌❌
监视器✅✅✅✅✅✅✅✅✅✅❌❌
角色管理器✅✅✅✅✅✅❌✅✅✅✅❌
多线程✅✅✅❌✅❌❌✅❌❌❌❌
匹配器中的 'in'✅✅✅✅✅❌✅❌❌❌✅✅
备注

Watcher 或 Role Manager 旁的勾选标记 (✅) 表示核心库中存在该接口;这并不保证该语言有可用的实现。

什么是 Casbin?​

Casbin 是一个授权库,适用于需要受控访问资源的应用程序。通常,一个主体(用户或服务)请求访问一个对象(资源或实体)以执行某个操作(例如 读取、写入 或 删除)。你可以定义这些操作以匹配你的应用程序。这是 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 仅专注于授权,不存储或验证密码。在 RBAC 模式下,它确实会维护用户–角色关联。

下一步​

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.