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方案中用戶和角色之間的映射關系。