概述
Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。
Casbin支持以下编程语言:
![]() | ![]() | ![]() | ![]() |
---|---|---|---|
Casbin | jCasbin | node-Casbin | PHP-Casbin |
可用于生产环境 | 可用于生产环境 | 可用于生产环境 | 可用于生产环境 |
![]() | ![]() | ![]() | ![]() |
---|---|---|---|
PyCasbin | Casbin.NET | Casbin4D | Casbin-RS |
production-ready | production-ready | experimental | WIP |
Feature set for different languages
Feature | Go | Java | Node.js | PHP | Python | C# | Delphi |
---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Filtered Adapter | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
我们一直致力于让Casbin在不同的编程语言中拥有相同的特性。 但是现实总是不完美的。 上方的表格展示了当前的进度。 Watcher或者Role Manager的✅ 仅代表Casbin对该编程语言有接口。 而是否实现了watcher或者role manager则是另一回事了。
Casbin是什么?
Casbin可以做到:
- 支持自定义请求的格式,默认的请求格式为
{subject, object, action}
。 - 具有访问控制模型model和策略policy两个核心概念。
- 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。
- 支持超级用户,如
root
或Administrator
,超级用户可以不受授权策略的约束访问任意资源。 - 支持多种内置的操作符,如
keyMatch
,方便对路径式的资源进行管理,如/foo/bar
可以映射到/foo*
Casbin不能做到:
- 身份认证 authentication(即验证用户的用户名、密码),casbin只负责访问控制。应该有其他专门的组件负责身份认证,然后由casbin进行访问控制,二者是相互配合的关系。
- 管理用户列表或角色列表。 Casbin 认为由项目自身来管理用户、角色列表更为合适, 用户通常有他们的密码,但是 Casbin 的设计思想并不是把它作为一个存储密码的容器。 而是存储RBAC方案中用户和角色之间的映射关系。