跳转至主要内容

Overview

Casbin是一个强大且高效的开源访问控制库,支持各种访问控制模型,用于在全局范围内执行授权。

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

Casbin支持的语言

Casbin为各种编程语言提供支持,准备在任何项目和工作流中集成:

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

不同语言的功能集

我们一直在尽我们最大的努力,使Casbin在所有语言中都有相同的功能集。 然而,现实并不那么美好。

特性GoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
Enforcement
RBAC
ABAC
Scaling ABAC (eval())
Adapter
Management API
RBAC API
Batch API
Filtered Adapter
Watcher
Role Manager
Multi-Threading
'in' of matcher

注意 - ✅ 对于观察者或角色管理器,只意味着在核心库中有接口。 这并不能表明是否有观察者或角色管理器的实现可用。

什么是Casbin?

Casbin是一个授权库,可以在我们希望某个对象或实体被特定用户或主体访问的流程中使用。 访问类型,即动作,可以是_读取_写入删除,或者由开发者设置的任何其他动作。 这就是Casbin最广泛使用的方式,它被称为“标准”或经典的{ 主体, 对象, 动作 }流程。

Casbin能够处理许多复杂的授权场景,而不仅仅是标准流程。 可以添加角色(RBAC)属性(ABAC)等。

Casbin做什么

  1. 在经典的{ 主体, 对象, 动作 }形式或者你定义的自定义形式中执行策略。 支持允许和拒绝授权。
  2. 处理访问控制模型及其策略的存储。
  3. 管理角色-用户映射和角色-角色映射(也称为RBAC中的角色层次)。
  4. 支持内置的超级用户,如rootadministrator。 超级用户可以在没有明确权限的情况下做任何事情。
  5. 提供多个内置操作符以支持规则匹配。 例如,keyMatch可以将资源键/foo/bar映射到模式/foo*

Casbin 做什么

  1. 身份验证(也就是在用户登录时验证用户名密码
  2. 管理用户或角色列表。

对于项目来说,管理他们的用户、角色或密码列表更方便。 用户通常有他们的密码,而Casbin并未设计为密码容器。 然而,Casbin存储了RBAC场景下的用户-角色映射。