贊助商
更快地建立具有預防詐欺功能的身份驗證。
嘗試使用 Stytch 進行 API 優先驗證、使用者和組織管理、多租戶 SSO、MFA、裝置指紋識別等。
?正在尋找像 Okta、Auth0、Keycloak 這樣的開源身分和存取管理解決方案?了解更多:卡斯多爾
News :還在擔心如何寫出正確的jCasbin策略嗎? Casbin online editor
來幫忙!試試看:https://casbin.org/editor/
jCasbin是一個強大且有效率的Java專案開源存取控制庫。它為基於各種存取控制模型的強制授權提供支援。
卡賓 | jCasbin | 節點Casbin | PHP-Casbin |
生產就緒 | 生產就緒 | 生產就緒 | 生產就緒 |
PyCasbin | 卡賓網 | Casbin-CPP | Casbin-RS |
生產就緒 | 生產就緒 | 貝塔測試 | 生產就緒 |
write-article
、 read-log
等權限來針對一種資源而非單一資源。它不控制對特定文章或日誌的存取。resource.Owner
這樣的語法糖可以用來取得資源的屬性。/res/*
、 /res/:id
等路徑和GET
、 POST
、 PUT
、 DELETE
等 HTTP 方法。在jCasbin中,存取控制模型是基於PERM元模型(Policy、Effect、Request、Matchers)被抽象化為CONF檔案。因此,切換或升級專案的授權機制就像修改配置一樣簡單。您可以透過組合可用的模型來自訂您自己的存取控制模型。例如,您可以將 RBAC 角色和 ABAC 屬性放在一個模型中,並共用一組策略規則。
jCasbin中最基本、最簡單的模型是ACL。 ACL的模型CONF為:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL 模型的策略範例如下:
p, alice, data1, read
p, bob, data2, write
這意味著:
jCasbin 的作用:
{subject, object, action}
形式或您定義的自訂形式強制執行策略,支援允許和拒絕授權。root
或administrator
。超級使用者可以在沒有明確權限的情況下執行任何操作。keyMatch
可以將資源鍵/foo/bar
對應到模式/foo*
。jCasbin 不做什麼:
username
和password
)對於Maven:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
您也可以使用線上編輯器 (https://casbin.org/editor/) 在 Web 瀏覽器中編寫 jCasbin 模型和策略。它提供syntax highlighting
和code completion
等功能,就像程式語言的 IDE 一樣。
https://casbin.org/docs/tutorials
使用模型檔案和策略檔案新建一個 jCasbin 強制執行器:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
注意:您還可以使用資料庫中的策略而不是檔案來初始化強制執行器,有關詳細信息,請參閱策略持久性部分。
在訪問發生之前將強制掛鉤添加到您的程式碼中:
String sub = "alice" ; // the user that wants to access a resource.
String obj = "data1" ; // the resource that is going to be accessed.
String act = "read" ; // the operation that the user performs on the resource.
if ( enforcer . enforce ( sub , obj , act ) == true ) {
// permit alice to read data1
} else {
// deny the request, show an error
}
除了靜態策略檔案之外,jCasbin還提供了用於執行時間權限管理的API。例如,您可以獲得指派給使用者的所有角色,如下所示:
Roles roles = enforcer . getRoles ( "alice" );
如需更多用法,請參閱策略管理 API。
jCasbin提供了兩套API來管理權限:
我們也提供基於 Web 的 UI 用於模型管理和策略管理:
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
模型 | 模型文件 | 政策文件 |
---|---|---|
前十字韌帶 | basic_model.conf | basic_policy.csv |
具有超級使用者的 ACL | basic_model_with_root.conf | basic_policy.csv |
無用戶的 ACL | basic_model_without_users.conf | basic_policy_without_users.csv |
無資源ACL | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
具有資源角色的 RBAC | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
帶有域/租戶的 RBAC | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
阿巴克 | abac_model.conf | 不適用 |
寧靜的 | keymatch_model.conf | keymatch_policy.csv |
拒絕-覆蓋 | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
優先事項 | 優先權模型.conf | 優先策略.csv |
Web 框架的 Authz 中間件:https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
我們提供Spring Boot支持,您可以使用casbin-spring-boot-starter在SpringBoot中快速開發
在casbin-spring-boot-starter中,我們做了以下調整:
https://github.com/jcasbin/casbin-spring-boot-starter
這個項目的存在要感謝所有做出貢獻的人。
感謝我們所有的支持者! [成為支持者]
成為贊助商來支持該計畫。您的徽標將顯示在此處,並帶有指向您網站的連結。 [成為贊助商]
該專案根據 Apache 2.0 許可證獲得許可。
如果您有任何問題或功能要求,請與我們聯絡。歡迎公關。