前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频系列 | Casbin权限实战:基于角色的RBAC授权

视频系列 | Casbin权限实战:基于角色的RBAC授权

作者头像
Tinywan
发布2020-11-20 10:26:35
1.6K0
发布2020-11-20 10:26:35
举报
文章被收录于专栏:开源技术小栈

1、上一个视频的录制回顾

  • 有同学反馈,声音比较小
  • 有些环节比较乱,不懂(课程是大家对于身份认证和访问授权没有区分开)

2、HTTP API 身份验证和授权

二者定义

认证(authentication):指证明身份正确

授权(authorization):指允许某种行为

API可能会对您进行身份验证,但不会授权您发出特定请求。

认证(authentication)

身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。系统确定您是否就是您所说的使用凭据。在公共和专用网络中,系统通过登录密码验证用户身份。身份验证通常通过用户名和密码完成,有时与身份验证因素结合使用,后者指的是各种身份验证方式。

更多查看:HTTP API 身份验证和授权 本文分享自微信公众号 - 万少波的播客(Tinywanblog)

3、官方-Model语法

  • 官方-Model语法
  • 仔细研究一下官方的model语法
  • 需要注意的事项

4、官方-基于角色的访问控制

官方-基于角色的访问控制

5、RBAC是什么?

RBAC是什么?

6、官方-RBAC模型

官方-RBAC模型编辑器

Model 定义
代码语言:javascript
复制
[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
Policy 定义
代码语言:javascript
复制
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write

g, alice, data2_admin

1、两个用户 alice 和 bob 2、一个角色 data2_admin 3、用户 alice 继承 data2_admin

Request (请求验证权限)
代码语言:javascript
复制
alice, data2, read
Enforcement Result (验证结果)
代码语言:javascript
复制
true

6、代码实战

1、添加策略

代码语言:javascript
复制
Casbin::addPermissionForUser('alice', 'data1', 'read');
Casbin::addPermissionForUser('bob', 'data2', 'write');

// var_dump(Casbin::addPermissionForUser('alice', 'data1', 'read'));
// var_dump(Casbin::addPermissionForUser('bob', 'data2', 'write'));

2、给 data2_admin 角色分配权限

代码语言:javascript
复制
Casbin::addPermissionForUser('data2_admin', 'data2', 'read');
Casbin::addPermissionForUser('data2_admin', 'data2', 'write');

// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'read'));
// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'write'));

3、给 alice 分配角色 data2_admin

代码语言:javascript
复制
Casbin::addRoleForUser('alice', 'data2_admin');

// var_dump(Casbin::addRoleForUser('alice', 'data2_admin'));

alice 将会拥有的所有 data2_admin 权限

4、分配完角色和权限后,数据库中的策略规则大致如下:(查看数据)

代码语言:javascript
复制
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write

g, alice, data2_admin

5、验证权限 alice 具有data2_admin 角色,继承data2_admin角色的全部权限.

代码语言:javascript
复制
Casbin::enforce('alice', 'data2', 'read');

// var_dump(Casbin::enforce('alice', 'data2', 'read'));

RBAC 控制管理

代码语言:javascript
复制
// 1、添加策略
// var_dump(Casbin::addPermissionForUser('alice', 'data1', 'read'));
// var_dump(Casbin::addPermissionForUser('bob', 'data2', 'write'));

// 2、给 data2_admin 角色分配权限
// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'read'));
// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'write'));

// 3、给 alice 分配角色 data2_admin
// var_dump(Casbin::addRoleForUser('alice', 'data2_admin')); 

// 4、严重权限
// var_dump(Casbin::enforce('alice', 'data2', 'read'));

【bilibili视频】ThinkPHP5.1+Casbin权限实战:基于角色的RBAC授权 连接地址:https://www.bilibili.com/video/BV1A541187M4

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 万少波的播客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、上一个视频的录制回顾
  • 2、HTTP API 身份验证和授权
    • 二者定义
      • 认证(authentication)
      • 3、官方-Model语法
      • 4、官方-基于角色的访问控制
      • 5、RBAC是什么?
      • 6、官方-RBAC模型
        • Model 定义
          • Policy 定义
            • Request (请求验证权限)
              • Enforcement Result (验证结果)
          • 6、代码实战
          相关产品与服务
          多因子身份认证
          多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档