Casbin 是一個強大的、高效的開源訪問控制框架,支持ACLRBACABAC等多種訪問控制模型,支持GolangJavaPHPNode.js等多種編程語言。

Casbin支持以下編程語言:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
可用于生產環境可用于生產環境可用于生產環境可用于生產環境
pythondelphidotnetrust
PyCasbinCasbin4DCasbin-NetCasbin-RS
可用于生產環境experimentalWIPWIP

特性

Casbin 做了什么:

  1. 自定義請求的格式,默認的請求格式為`{subject, object, action}`。
  2. 訪問控制模型及其策略的存儲。
  3. 支持RBAC中的多層角色繼承,不止主體可以有角色,資源也可以具有角色。
  4. 支持超級用戶,如 `rootAdministrator`,超級用戶可以不受授權策略的約束訪問任意資源。
  5. 支持多種內置的操作符,如 `keyMatch,方便對路徑式的資源進行管理,如 /foo/bar 可以映射到 /foo*`。

Casbin 不做的事情:

  1. 身份認證 authentication(即驗證用戶的用戶名、密碼),casbin只負責訪問控制。應該有其他專門的組件負責身份認證,然后由casbin進行訪問控制,二者是相互配合的關系。
  2. 管理用戶列表或角色列表。 Casbin 認為由項目自身來管理用戶、角色列表更為合適, 用戶通常有他們的密碼,但是 Casbin的設計思想并不是把它作為一個存儲密碼的容器。 而是存儲RBAC方案中用戶和角色之間的映射關系。