shiro框架学习-1-shiro基本概念
1. 什么是权限控制
基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源,
理解两个概念:用户和资源,权限控制就是让指定的用户,只能操作指定的资源(CRUD),这里的用户 ,也包含机机接口的访问方。权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问
控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。
2. 什么是ACL和RBAC
* ACL: Access Control List 访问控制列表
* 以前盛行的一种权限设计,它的核心在于用户直接和权限挂钩
* 优点:简单易用,开发便捷
* 缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理
* 例子:常见的文件系统权限设计, 直接给用户加权限
* RBAC: Role Based Access Control
* 基于角色的访问控制系统。权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限
* 优点:简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关联起来
* 缺点:开发对比ACL相对复杂
* 例子:基于RBAC模型的权限验证框架与应用 Apache Shiro、spring Security
* BAT企业 ACL,一般是对报表系统,阿里的ODPS
* 总结:不能过于复杂,规则过多,维护性和性能会下降, 更多分类 ABAC、PBAC等
3.Shiro架构图交互和四大核心模块 身份认证,授权,会话管理和加密
- Apache Shiro官网 http://shiro.apache.org/introduction.html
身份认证 Authentication,一般就是登录(不仅仅是人机交互的登录,也是机机交互之间的登录)
- 授权 Authorization,给用户分配角色或者访问某些资源的权限
- 会话管理 Session Management, 用户的会话管理员,多数情况下是web session(也包括机机交互时的登录session)
- 加密 Cryptography, 数据加解密,比如密码加解密等
4.Shiro常见名称:
- Subject
- 我们把用户或者程序称为主体(如用户,第三方服务,定时任务作业),主体去访问系统或者资源
- SecurityManager
- 安全管理器,Subject的认证和授权都要在安全管理器下进行
- Authenticator
- 认证器,主要负责Subject的认证
- Realm
- 数据域,Shiro和安全数据的连接器,好比jdbc连接数据库; 通过realm获取认证授权相关信息
- Authorizer
- 授权器,主要负责Subject的授权, 控制subject拥有的角色或者权限
- Cryptography
- 加解密,Shiro的包含易于使用和理解的数据加解密方法,简化了很多复杂的api
- Cache Manager
- 缓存管理器,比如认证或授权信息,通过缓存进行管理,提高性能 更多资料导航:http://shiro.apache.org/reference.html
5.用户访问Shrio权限控制运行流程
用户(subject)输入账号密码-> realem获取认证授权相关信息-> Authenticator进行认证 -> Authorizer进行授权
shiro框架学习-1-shiro基本概念的更多相关文章
- shiro框架学习-5-自定义Realm
1. 自定义Realm基础 步骤: 创建一个类 ,继承AuthorizingRealm->AuthenticatingRealm->CachingRealm->Realm 重写授权方 ...
- shiro框架学习-6-Shiro内置的Filter过滤器及数据加解密
1. shiro的核心过滤器定义在枚举类DefaultFilter 中,一共有11个 ,配置哪个路径对应哪个拦截器进行处理 // // Source code recreated from a .c ...
- shiro基础学习(二)—shiro认证
一.shiro简介 shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证.权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. 以下 ...
- shiro基础学习(四)—shiro与项目整合
一.认证 1.配置web.xml 2.配置applicationContext.xml 在applicationContext.xml中配置一个bean,ID和上面的过滤器的名称一致. ...
- shiro框架学习-3- Shiro内置realm
1. shiro默认自带的realm和常见使用方法 realm作用:Shiro 从 Realm 获取安全数据 默认自带的realm:idae查看realm继承关系,有默认实现和自定义继承的realm ...
- shiro框架学习-9-shiroSession
1.什么是会话session : 用户和程序直接的链接,程序可以根据session识别到哪个用户,和javaweb中的session类似 2. 什么是会话管理器SessionManager : 会话管 ...
- shiro框架学习-8-shiro缓存
1. shiro进行认证授权时会查询数据库获取用户角色权限信息,每次登录都会去查询,这样对性能会又影响.可以设置缓存,查询时先去缓存中查找,缓存中没有再去数据库查询. 从shiro的架构图中可以看到有 ...
- shiro框架学习-4- Shiro内置JdbcRealm
1. JdbcRealm 数据库准备 JdbcRealm就是用户的角色,权限都从数据库中读取,也就是用来进行用户认证授权的安全数据源更换为从数据库中读取,其他没有差别,首先在数据库创建三张表: CR ...
- shiro框架学习-2-springboot整合shiro及Shiro认证授权流程
1. 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
随机推荐
- 用poi来导出数据到excel文档
package cn.com.dyg.work.common.utils; import org.apache.poi.hssf.usermodel.HSSFRichTextString; impor ...
- form 源码刨析
def clean_name(self) value = self.cleaned_data.get('name') if "金-瓶-梅" not in value: raise ...
- Nginx_Ubuntu
一. 基本步骤 1.1 环境准备 开始前,请确认gcc g++开发类库是否装好,默认已经安装. 注: 等待linux下载更新功能准备好了 重启系统 在执行下载安装命令,如执行命令没有问题可以继续往下走 ...
- HDU 6175 算术
题目大意 求 $\sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(\lcm(i, j))$ . $ 1 \le n, m \le 10^6 $ . 分析 不妨设 $ n \l ...
- 来自 Vue 3.0 的 Composition API 尝鲜
来自 Vue 3.0 的 Composition API 尝鲜:https://segmentfault.com/a/1190000020205747
- Java Android 开发数字不足位数前面补0
import java.text.DecimalFormat; public void changeColor(View view) { DecimalFormat decimalFormat = n ...
- noip2011day2-观光公交
题目描述 风景迷人的小城 \(Y\) 市,拥有 $n $个美丽的景点. 由于慕名而来的游客越来越多,\(Y\) 市特 意安排了一辆观光公交车,为游客提供更便捷的交通服务. 观光公交车在第 \(0\) ...
- Largest Beautiful Number CodeForces - 946E (贪心)
大意: 定义一个好数为位数为偶数, 且各位数字重排后可以为回文, 对于每个询问, 求小于$x$的最大好数. 假设$x$有$n$位, 若$n$为奇数, 答案显然为$n-1$个9. 若为偶数, 我们想让答 ...
- centos7配置mysql8.0主从复制
注意:1.主库:10.1.131.75,从库:10.1.131.762.server-id必须是纯数字,并且主从两个server-id在局域网内要唯一. [主节点]vi /etc/my.cnf[mys ...
- java实现spark常用算子之cogroup
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spa ...