赞助商
更快地构建具有预防欺诈功能的身份验证。
尝试使用 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 许可证获得许可。
如果您有任何问题或功能请求,请联系我们。欢迎公关。