RBAC
1、 什么是 RBAC
- RBAC(Role-Based Access Control ) 基于角色的访问控制。
- RBAC 认为权限的过程可以抽象概括为:
判断【Who 是否可以对 What 进行 How 的访问操作(Operator) 】
Who: 权限的拥用者或主体
What: 权限针对的对象或资源
How: 具体的权限
Operator: 操作。 表明对 What 的 How 操作。 也就Privilege+Resource
Role: 角色, 一定数量的权限的集合。权限分配的单位与载体,目的是隔离User与Privilege的逻辑关系
2、 RBAC96 模型
1 RBAC 模型
- RBAC96 模型家族,其中包括了 RBAC0~RBAC3 四个概念模型。
2 RBAC0
- 定义了能构成一个 RBAC 控制系统的最小的元素集合
- 在 RBAC 之中,包含用户 users(USERS)、 角色 roles(ROLES)、 目标 objects(OBS)、 操作operations(OPS)、 许可权 permissions(PRMS)五个基本数据元素, 权限被赋予角色,而不是用户, 当一个角色被指定给一个用户时, 此用户就拥有了该角色所包含的权限。 会话 sessions是用户与激活的角色集合之间的映射。 RBAC0 与传统访问控制的差别在于增加一层间接性
带来了灵活性, RBAC1、 RBAC2、 RBAC3 都是先后在 RBAC0 上的扩展。
UA(User Assignment):用户角色分配
PA(Permission Assignment):角色许可分配
3 RBAC1
- 引入角色间的继承关系
- 角色间的继承关系可分为一般继承关系和受限继承关系。 一般继承关系仅要求角色继承关系是一个绝对偏序关系, 允许角色间的多继承。 而受限继承关系则进一步要求角色继承关系是一个树结构
4 RBAC2
- 该模型中添加了责任分离关系
- RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。 责任分离包括静态责任分离和动态责任分离。 约束与用户-角色-权限关系一起决定了 RBAC2 模型中用户的访问许可
Shiro
1、Shiro 的简介
A、 为什么学习 Shiro
目前使用遇到的问题?
- [1]使用 RBAC 进行角色访问控制的时候, 代码书写起来相对比较麻烦
- [2]目前学习的写的操作代码整体不太安全
B、 解决的方案
- [1]Spring securing 安全框架 缺点: 基于 Spring 之上的, 局限性比较大
- [2]shiro javaEE javaSE 分布式项目
C、 什么是 shiro
-
Apache Shiro 是一个强大而灵活的开源安全框架, 它干净利落地处理身份认证, 授权, 企业会话管理和加密
-
Shiro 的官网: http://shiro.apache.org/
D、 Shiro 中的体系的组成
Authentication: 身份的验证-就是我们平时做的登录
Authorization: 授权: 赋予角色不同的 菜单功能
Session Management: 管理登录用户的信息
Cryptography: 加密技术 MD5 加密算法等。
Web Support: shiro 对 web 项目进行的支持
Caching: 缓存 可以安全快速的操作
Concurrency: 支持并发多线程的处理
Testing: 测试
Run As: 可以实现在一个用户允许的前提下, 使用另一个用户访问
Remember Me: 记住我Authentication:身份的验证-就是我们平时做的登录
E、 shiro 的架构
-
Subject(org.apache.shiro.subject.Subject)
当前与软件进行交互的实体( 用户, 第三方服务, cron job, 等等) 的安全特定“视图”当前与软件进行交互的实体( 用户, 第三方服务, cron job, 等等) 的安全特定“视图” -
SecurityManager
SecurityManager 是 Shiro 架构的心脏。 它基本上是一个“保护伞”对象, 协调其管理的组件 以 确 保 它 们 能 够 一 起 顺 利 的 工 作 类 似 于SpringMVC 中的入口 servlet -
Realms: 域
Realms 在 Shiro 和你的应用程序的安全数据之间担当“桥梁”或“连接器”。 当它实际上与安全相关的数据如用来执行身份验证( 登录) 及授权(访问控制) 的用户帐户交互时, Shiro 从一个或多个为应用程序配置的 Realm中寻找许多这样的东西
2、Shiro 的环境搭建
使用 shiro 实现登陆的操作