Shiro框架1

入门概述

1 权限的管理

1.1 什么是权限管理

基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权(被赋予权限)的资源

权限管理包括用户身份认证授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。

1.2 什么是身份认证

身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。

1.3 什么是授权

授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的

2 shiro是什么?

  • Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。
  • 简单来说,Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。

3 为什么要用shiro?

① 易于使用:使用 Shiro 构建系统安全框架非常简单。就算第一次接触也可以快速掌握。

② 全面:Shiro 包含系统安全框架需要的功能,满足安全需求的“一站式服务”。

③ 灵活:Shiro 可以在任何应用程序环境中工作。虽然它可以在 Web、EJB 和 IoC 环境中工作,但不需要依赖它们。Shiro 也没有强制要求任何规范,甚至没有很多依赖项。

④ 强力支持 Web:Shiro 具有出色的 Web 应用程序支持,可以基于应用程序 URL 和 Web 协议(例如 REST)创建灵活的安全策略,同时还提供一组 JSP 库来控制页面输出。

⑤ 兼容性强:Shiro 的设计模式使其易于与其他框架和应用程序集成。Shiro 与 Spring、Grails、Wicket、Tapestry、Mule、Apache Camel、Vaadin 等框架无缝集成。

⑥ 社区支持:Shiro 是 Apache 软件基金会的一个开源项目,有完备的社区支持,文档支持。如果需要,像 Katasoft 这样的商业公司也会提供专业的支持和服务

4 Shiro和SpringSecurity的区别?

① Spring Security 基于 Spring 开发,项目若使用 Spring 作为基础,配合 Spring Security 做权限更加方便,而 Shiro 需要和 Spring 进行整合开发;

② Spring Security 功能比 Shiro 更加丰富些,例如安全维护方面;

③ Spring Security 社区资源相对比 Shiro 更加丰富;

④ Shiro 的配置和使用比较简单,Spring Security 上手复杂些;

⑤ Shiro 依赖性低,不需要任何框架和容器,可以独立运行.Spring Security 依赖 Spring 容器;

⑥ shiro 不仅仅可以使用在 web 中,它可以工作在任何应用环境中。在集群会话时 Shiro 最重要的一个好处或许就是它的会话是独立于容器的。

5 基本功能

功能相关介绍:
① Authentication:身份认证/登录,验证用户是不是拥有相应的身份;

② Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用 户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户 对某个资源是否具有某个权限;

③ Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的 所有 信息都在会话中;会话可以是普通 JavaSE 环境,也可以是 Web 环境的;

④ Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

⑤ Web Support:Web 支持,可以非常容易的集成到 Web 环境;

⑥ Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可 以提高效率;

⑦ Concurrency:Shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

⑧ Testing:提供测试支持;

⑨ Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

⑩ Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了

6 原理

Shiro 架构(外部)
从外部来看 Shiro ,即从应用程序角度的来观察如何使用Shiro 完成工作

        任何一个需要进行安全身份校验的对象Subject进来,ShiroSecurityManager安全管理器处使用Shiro的各种组件进行身份校验。从Realm获取相关需要校验的安全数据。
Shiro 架构

1 Subject

  • Subject即主体,外部应用与subject进行交互,subject记录了当前操作用户,将用户的概念理解为当前操作的主体,可能是一个通过浏览器请求的用户,也可能是一个运行的程序。
  • Subject在shiro中是一个接口,接口中定义了很多认证授相关的方法,外部程序通过subject进行认证授,而subject是通过SecurityManager安全管理器进行认证授权

2 SecurityManager

  • SecurityManager即安全管理器,对全部的subject进行安全管理,它是shiro的核心,负责对所有的subject进行安全管理。通过SecurityManager可以完成subject的认证、授权等,实质上SecurityManager是通过Authenticator进行认证,通过Authorizer进行授权,通过SessionManager进行会话管理等。
  • SecurityManager是一个接口,继承了Authenticator, Authorizer, SessionManager这三个接口。

3.3 Authenticator

  • Authenticator即认证器,对用户身份进行认证,Authenticator是一个接口,shiro提供ModularRealmAuthenticator实现类,通过ModularRealmAuthenticator基本上可以满足大多数需求,也可以自定义认证器。

3.4 Authorizer

  • Authorizer即授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。

3.5 Realm

  • Realm即领域,相当于datasource数据源,securityManager进行安全认证需要通过Realm获取用户权限数据,比如:如果用户身份数据在数据库那么realm就需要从数据库获取用户身份信息。
  • ​ 注意:不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验的相关的代码。

3.6 SessionManager

  • sessionManager即会话管理,shiro框架定义了一套会话管理,它不依赖web容器的session,所以shiro可以使用在非web应用上,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。

3.7 SessionDAO

  • SessionDAO即会话dao,是对session会话操作的一套接口,比如要将session存储到数据库,可以通过jdbc将会话存储到数据库。

3.8 CacheManager

  • CacheManager即缓存管理,将用户权限数据存储在缓存,这样可以提高性能。

3.9 Cryptography

  • Cryptography即密码管理,shiro提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python--线程基础

相关概念 线程是"轻量级进程",是计算机中CPU进行任务调度的最小单位。 线程属于进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。 每个进程开始的创建的时候,都会随之创建一个主线程。 进程负责分配和隔离资源(CPU, 内存…

版本控制系统:Git 纯应用(持续更新)

基本操作 ctrl上行键:上次代码 本地仓库:Git init 新建文件:touch xxxx.xxx 查看状态:Git status 文件从工作区——暂存区:Git add ./文件名(.是通配符代表所有) 暂存区——仓库:Git commit -m &…

PLC边缘网关在实际应用中的作用-天拓四方

随着工业自动化的快速发展,PLC已成为工业自动化领域中不可或缺的核心设备。然而,随着工业物联网的兴起,PLC设备面临着数据集成、远程监控以及安全性等方面的挑战。为了解决这些问题,PLC边缘网关应运而生,它作为连接PLC…

极简通俗VAE

一、VAE 背景:VAE什么变分自编码器,听起来起名都头大,用大白话告诉你。 把一个复杂图片压缩成两个参数,用这个参数采样再复原。 这个简单的东西是两个参数,均值和方差,用(0,1&…

Idea-Idea配置gitIgnore忽略文件

背景 在项目提交到Git过程中,总有一些文件,例如.idea和.iml等这些我们不想提交的,直接添加进入gitIgnore文件中自动忽略掉。 Idea安装插件 1、在File->Setting->Plugins中搜索gitIgnore并安装插件 2、项目右键new->.ignore File-…

企业LoRA模型定制服务

🌈 最强AI绘画模型训练、定制服务公司出炉 —— 触站AI,设计界的智能魔法师 🧙‍♂️ 🎨 触站AI,用智能技术解锁设计的无限可能 🎨在创意与科技交织的今天,触站AI以其AI绘画模型训练和定制服务…

交易时你是否会考虑多种观点呢?

在交易过程中,考虑多种观点并融入多元化分析,是提升交易决策质量和最终交易结果的关键因素之一。 单一观点或分析方法往往容易受到个人偏见、情绪或信息局限性的影响。通过引入多元化分析,我们可以从不同角度审视市场,减少因主观…

iPhone苹果手机怎么取消腾讯视频VIP会员自动续费?

腾讯视频会员分为VIP(同时在线设备5台、同时播放设备2台;)和SVIP(同时在线设备8台、同时播放设备3台;),在iPhone苹果手机上开通腾讯视频连续包月、包季、包年后,需要手动取消才能关闭…

linux centos tomcat 不安全的HTTP请求方法

1、页面查看 2、在linux主机可使用此命令查看 curl -v -X OPTIONS http://实际地址 3、进入tomcat conf目录vim web.xml&#xff0c;增加以下内容 <!-- close insecure http methods --> <security-constraint><web-resource-collection><web-resource…

从零到一:全面掌握模板机部署与虚拟机克隆的实训指南【实训Day01】

一、模板机的部署 1.设置好子网ip和子网掩码以及网关 保证有NAT模式 子网IP着重记住前三段&#xff1a;192.168.222.xxx 2.开始建立虚拟机 注意&#xff1a;路径中不要有中文 3.安排8个内核 4.安排2GB内存 创建初步成功&#xff0c;接着 5.开启此虚拟机 6.选择中文 7.日期&…

【计算机网络】计算机网络的分类

计算机网络的分类 导读一、按分布范围分类1.1 广域网&#xff08;WAN&#xff09;。1.2 城域网&#xff08;MAN&#xff09;1.3 局域网&#xff08;LAN&#xff09;1.4 个人区域网&#xff08;PAN&#xff09;1.5 多处理器系统 二、按传输技术分类2.1 广播式网络2.2 点对点网络…

统信UOS+银河麒麟系统开发、运维使用技巧与疑难问题解决经验

文章目录 1.开发运维常用技巧1.1 设置root密码1.2 安装g编译器1.3 系统无法登录进入命令行终端1.4 开机启动ssh服务1.5 查看显卡GPU使用率1.5.1 AMD显卡查看GPU使用率1.5.2 景嘉微显卡1.5.3 英伟达显卡 1.6 OpenGL接口版本查看1.6.1 查看OpenGL接口版本1.6.2 查看OpenGL ES接口…

LaySNS模板仿RiPro日主题素材源码资源下载响应式CMS模板

LaySNS模板仿RiPro日主题素材源码资源下载响应式CMS模板&#xff0c;该主题是网上泛滥的RiPro主题仿制而成的laysns模板&#xff0c;原主题是很强大的。 全站功能是通过ajax响应实现的&#xff0c;另外就是网上流传得比较多的是美化版。 主要说明&#xff1a;付费/回复下载功…

用Chromatix进行tuning流程

##一、基本调试 ###1、工程初始配置&#xff1a; 这个工具就是一个图形化的参数编辑器&#xff0c;其实所有tuning中的效果参数直接改文件参数酒醒&#xff0c;工具的好处是&#xff1a;带有检查错误和模拟的功能以及一些校验工具和脚本。 初始化可以中需要的配置&#xff1a;t…

鸿蒙如何打包应用程序

总结鸿蒙应用程序包 之前文章详细讲解了关于三种程序包的内容&#xff0c;现在简单总结一下&#xff1a; 1. 总结 首先需要搞清楚鸿蒙项目的模块Module的分类: Module分为“Ability”和“Library”两种类型 HAP HAP: Harmony Ability Package , 叫做鸿蒙Ability包。 “Abil…

全面详解菲律宾slots游戏本土网盟广告CPI流量效果分析

全面详解菲律宾slots游戏本土网盟广告CPI流量效果分析 一、引言 随着互联网的普及和移动设备的广泛应用&#xff0c;网络游戏行业迅速崛起&#xff0c;成为全球娱乐市场的一大热门。菲律宾作为东南亚地区的重要国家&#xff0c;其网络游戏市场也呈现出蓬勃的发展势头。在这样的…

JavaScript中location对象的主要属性和方法

属性 href&#xff1a;获取或设置整个URL。protocol&#xff1a;获取URL的协议部分&#xff0c;如"http:"或"https:"。host&#xff1a;获取URL的主机名&#xff08;包括端口号&#xff0c;如果有的话&#xff09;。hostname&#xff1a;获取URL的主机名&…

电工电子革新风暴:在线电路仿真软件重塑行业格局

随着科技的不断进步&#xff0c;电工电子行业正迎来一场由在线电路仿真软件引领的革新风暴。这些功能强大的软件工具不仅极大地提高了电路设计的效率&#xff0c;更为整个行业带来了前所未有的冲击和机遇。 仿真软件&#xff1a;电工电子行业的“隐形推手” 在线电路仿真软件…

k8s_集群搭建_在主节点中加入node节点_k8s集群自恢复能力演示_token过期重新生成令牌---分布式云原生部署架构搭建016

然后安装好了master节点以后,我们再来看如何把node节点加入进来,可以看到 只需要执行,命令行中提示的命令就可以了 比如上面的 Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:…

非参数与半参数估计模型及 Stata 具体操作步骤

目录 一、引言 二、非参数与半参数估计模型的理论原理 非参数估计 半参数估计 三、数据 四、核密度估计的 Stata 操作 五、局部多项式回归的 Stata 操作 六、部分线性模型的 Stata 操作 七、总结 一、引言 在当今复杂多变的数据环境中&#xff0c;传统的基于严格参数假…