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> ...
随机推荐
- LeetCode.970-强大的整数(Powerful Integers)
这是悦乐书的第367次更新,第395篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第229题(顺位题号是970).给定两个正整数x和y,如果对于某些整数i >= 0 ...
- 解决ubuntu16.04 USB鼠标键盘使用卡顿
小米游戏本,键盘突然M建不能用,去了售后换了个键盘. 小米售后真的不想吐槽……入坑 键盘鼠标卡顿由于挂起导致失灵,每次需要激活所以卡顿 解决办法如下: 编辑如下文件配置 sudo vim /etc/l ...
- etcd常用命令-增删改查
增删改查key-values 插入数据测试 # etcdctl put name1 james# etcdctl put name11 alice# etcdctl put name12 seli # ...
- linux-查询某软件的安装的目录
eg:jenkins\\\ rpm -ql jenkins 安装目录/var/lib/jenkins 配置文件 /etc/sysconfig/jenkins 日志目录 /var/log/jenkins ...
- 【6.28校内test】T1 Jelly的难题1
Jelly的难题[题目链接] 废话一句:今天中考出成绩,感觉大家考的都超级棒,不管怎样,愿大家成为最好的自己. 好了废话完了,下面是题解部分: SOLUTION: 首先你可能发生的,是看不懂题: 定睛 ...
- 2019.07.09 纪中_B
错失AK记 2019.07.09[NOIP提高组]模拟 B 组 明明今天的题都很水,可就是没蒟蒻. 写题的时候: T0一眼高精(结果没切)T1看到2啊8啊果断转二进制观察,发现都是左移几位然后空出的位 ...
- queue的常见用法
queue的使用 queue是什么? queue是一种先入先出的容器 queue的定义 引入 # include <iostream> # include <queue> us ...
- ZOJ 2836 Number Puzzle 题解
题面 lcm(x,y)=xy/gcd(x,y) lcm(x1,x2,···,xn)=lcm(lcm(x1,x2,···,xn-1),xn) #include <bits/stdc++.h> ...
- BZOJ 4857 反质数序列
题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...
- 03: saltstack和ansible的区别和原理
1.1 SaltStack.Ansible.Puppet比较 1.SaltStack 1. saltStack由Python编写,为server-client模式的系统,自己本身支持多master. ...
