Casbin 是一个强大的、高效的开源访问控制框架,支持ACL
、RBAC
、ABAC
等多种访问控制模型,支持Golang
、Java
、PHP
、Node.js
等多种编程语言。
Casbin支持以下编程语言:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
可用于生产环境 | 可用于生产环境 | 可用于生产环境 | 可用于生产环境 |
PyCasbin | Casbin4D | Casbin-Net | Casbin-RS |
可用于生产环境 | experimental | WIP | WIP |
特性
Casbin 做了什么:
- 自定义请求的格式,默认的请求格式为
`{subject, object, action}
`。 - 访问控制模型及其策略的存储。
- 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。
- 支持超级用户,如
`root
或
Administrator
`,超级用户可以不受授权策略的约束访问任意资源。 - 支持多种内置的操作符,如
`keyMatch
,方便对路径式的资源进行管理,如
/foo/bar
可以映射到
/foo*
`。
Casbin 不做的事情:
- 身份认证
authentication
(即验证用户的用户名、密码),casbin
只负责访问控制。应该有其他专门的组件负责身份认证,然后由casbin
进行访问控制,二者是相互配合的关系。 - 管理用户列表或角色列表。
Casbin
认为由项目自身来管理用户、角色列表更为合适, 用户通常有他们的密码,但是Casbin
的设计思想并不是把它作为一个存储密码的容器。 而是存储RBAC方案中用户和角色之间的映射关系。