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> ...
随机推荐
- 一文搞懂HTTP和HTTPS协议
1.什么是协议? 网络协议是计算机之间为了实现网络通信而达成的一种"约定"或者"规则",有了这种"约定",不同厂商的生产设备,以及不同操作系 ...
- 常用ARM指令
常用ARM指令1:数据处理指令 mov mvn MOV(MOVE)指令可完成从另一个寄存器.被移位的寄存器或将一个立即数加载到目的寄存器 MOV R0,R1;R1的值传到R0 MOV R3,#3 ...
- vps分区 挂载wdcp 的/www目录大小调整或增加分区/硬盘的方法
http://www.wdlinux.cn/bbs/viewthread.php?tid=3574&highlight=%B7%D6%C7%F8 http://www.80vps.com/ne ...
- Python_Onlineh_Hmework(基础篇,持续更新中...)
1 递归 1.1 定义一个函数,求一个数的阶乘 def func(x): if x == 2: return 2 else: return x*func(x-1) a = func(4) print( ...
- go的变量定义
package main //理解包的概念 import "fmt" var ( aa = 1 bb = "kkk" ss = true) func varia ...
- [ASP.NET] 数据绑定以及Container.DataItem的具体分析 [转]
灵活的运用数据绑定操作 绑定到简单属性:<%#UserName%> 绑定到集合:<asp:ListBox id="ListBox1" ...
- 抖音很火的存钱计划,让python告诉你总共可以存到多少钱!
抖音上有个很火的存钱计划,说是第一天存1块钱,第二天存2块钱,第三天存3块钱.....依此类推存365天,总共可以存到多少钱,我们现在用python告诉你怎么做: #定个初始存入金额 money = ...
- sql server 获取整数的函数ceiling(x)和floor(x)
--ceiling(x)返回不小于x的最小整数值,floor(x)返回不大于x的最大整数值 示例:select CEILING(-3.35), CEILING(3.35), FLOOR(-3.35), ...
- react-native底部导航栏实现
react-native-tab-navigator实现: bottom.js代码如下: import React, {Component} from 'react'; import {StyleSh ...
- [转载]MII/MDIO接口详解
原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...
