casbin权限和配置文件的理解

官方文档

基础权限模型

下图为我基于个人理解画出来的(关于多租户RBAC模型可能有误)
在这里插入图片描述
发现一篇博客讲的还行Casbin权限模型,看他的权限系统设计模型分析部分

casbin配置文件内容的结构解释

注意matchers可以设置多个。我在知道这个之前一直疑惑为什么需要policy_effect
policy.csv只是一个数据文件,即持久化了的用户权限数据,也可以存在数据库
model.conf一般在设计项目权限模型时就定好了,一般就用conf文件或者字符串形式
在这里插入图片描述

model.conf文档相关

  • 至少包含[request_definition], [policy_definition], [policy_effect], [matchers]
  • 使用#进行注释
  • [policy_definition]如果只有操作没有具体资源,比如write-all-objects,可以只写p = sub, act
  • [policy_effect]:自己去看官方文档吧,感觉怪怪的

模型方案的具体实现

  • ACL(最基础的,后面模型的改变均基于此)
    [request_definition]
    r = sub, obj, act
    
    [policy_definition]
    p = sub, obj, act
    
    [policy_effect]
    e = some(where (p.eft == allow))
    
    [matchers]
    m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
    
  • 有超级用户的ACL:
    matchers加个如果是超级用户就放行
    m = r.sub == p.sub && r.obj == p.obj && r.act == p.act || r.sub == "root"
    
  • 没有用户、只有资源和操作的ACL
    去掉所有的sub
    r = obj, act
    p = obj, act
    m = r.obj == p.obj && r.act == p.act
    
  • 基础RBAC
    添加role_definition,且只有两个下划线
    [role_definition]
    g = _, _
    
    matcher添加用户-角色关联
    m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
    
  • 具有资源角色的RBAC
    相比基础RBAC添加角色-资源关联
    g = _, _
    g2 = _, _
    
    m = g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act
    
  • 带有域/租户的RBAC
    三个下划线并添加关联
    g = _, _, _
    
    m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
    
  • ABAC
    matchers进行属性的过滤,且不需要policy文件,因为权限是即时得出的
    m = r.sub == r.obj.Owner
    
  • Restful
    matchers进行正则匹配
    m = r.sub == p.sub && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act)
    
  • matcher全allowtrue
    e = !some(where (p.eft == deny))
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
JWT是一种基于JSON的标准的身份验证和授权令牌,用于在网络应用中传递声明。而Casbin是一个强大的访问控制框架,它提供了一种灵活的权限管理方式,可以通过编程或配置文件进行RBAC(基于角色的访问控制)权限控制。 使用JWT和Casbin实现RBAC权限管理的一般流程如下: 1. 用户登录:用户提供用户名和密码进行身份验证,验证成功后后端生成JWT令牌并返回给前端。 2. 前端请求授权:前端在每次请求中携带JWT令牌,在请求头中加入Authorization字段,值为"Bearer + 生成的JWT令牌"。 3. 后端验证:后端接收到请求后,从请求头中获取JWT令牌。通过验证JWT的有效性(包括签名、过期时间等),确定用户的身份。 4. Casbin权限验证:后端使用Casbin框架进行RBAC权限验证。Casbin通过配置角色和权限关系的模型文件,根据用户的角色和请求路径,判断用户是否具有访问权限。 5. 授权结果返回:Casbin根据判断结果,返回授权结果给后端。如果授权成功,则继续处理请求;如果授权失败,则返回相应的错误提示。 通过将JWT和Casbin结合使用,可以实现灵活的RBAC权限管理。JWT用于验证用户身份并在请求中携带令牌,Casbin用于基于角色的权限控制。这样可以有效管理系统中的角色和权限关系,保证用户只能访问其拥有权限的资源,从而提高系统的安全性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值