跳转至主要内容

概述

Casbin 是一个强大和高效的开放源码访问控制库,它支持各种 访问控制模型 以强制全面执行授权。

执行一套规则与列出下述问题一样简单。 对象和所需的 在 策略 文件中允许的动作(或根据您的需要提供任何其他格式)。 这是Casbin使用的所有流的同义词。 开发者/管理员有 完全控制布局, 通过 模型 文件设置的执行和授权条件 。 Casbin提供了一个执行者 根据提供给执行者的策略和模型文件验证传入的请求。

Casbin 支持以下编程语言:

Casbin 为各种编程语言提供支持,随时准备将 纳入任何项目和工作流:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
可用于生产环境可用于生产环境可用于生产环境可用于生产环境
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-C++Casbin-RS
可用于生产环境可用于生产环境可用于生产环境可用于生产环境

在不同语言中支持的特性

We are always working our best to make Casbin have the same set of features for all languages. 但是现实总是不完美的。

特性GoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
具体实施
RBAC
ABAC
Scaling ABAC (eval())
适配器
管理接口
RBAC API
Batch API
Filtered Adapter
Watcher
Role Manager
Multi-Threading
matcher中的‘in‘语法

Note- ✅ for Watcher or Role Manager only means having the interface in the core library. It is not indicative of whether there is a watcher or role manager implementation available.

Casbin 是什么?

Casbin 是一个授权库,在我们希望特定用户访问特定的 对象 或实体的流程中可以使用 主题 访问类型,例如 动作 可以是 读取, 写入, 删除 或开发者设置的任何其他动作。 这是Casbin最广泛的使用,它叫做"标准" 或经典 { subject, object, action } 流程。

Casbin能够处理除标准流量以外的许多复杂的许可使用者。 可以添加 角色 (RBAC), 属性 (ABAC) 等。

Casbin 可以:

  1. Enforce the policy in the classic { subject, object, action } form or a customized form as you defined. 支持允许和拒绝授权。
  2. 具有访问控制模型model和策略policy两个核心概念。
  3. 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。
  4. 支持内置超级用户,如 rootadministrator。 超级用户可以在没有明确权限的情况下做任何事情。
  5. 支持多个规则匹配运算符。 For example, keyMatch can map a resource key /foo/bar to the pattern /foo*.

Casbin可以做什么

  1. 身份认证 authentication(即验证用户的用户名和密码),Casbin 只负责访问控制。应该有其他专门的组件负责身份认证,然后由 Casbin 进行访问控制,二者是相互配合的关系。
  2. 管理用户列表或角色列表。

该项目更容易管理他们的用户、角色或密码列表。 用户通常有他们的密码,但是 Casbin 的设计思想并不是把它作为一个存储密码的容器。 而是存储RBAC方案中用户和角色之间的映射关系。