shiro框架基本概念介绍

news2024/11/26 2:51:26

目录

什么是Shiro:

Shiro的核心功能包括:

Shiro主要组件及相互作用:

Shiro 认证过程:

Shiro 授权过程:

资料获取方法


什么是Shiro:

  Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理

Shiro的核心功能包括:

  1. 身份验证(Authentication):验证用户的身份,确保用户是合法的。
  2. 授权(Authorization):控制用户对系统资源的访问权限,限制用户只能访问其被授权的部分。
  3. 会话管理(Session Management):管理用户会话,跟踪用户的登录状态和活动,并提供会话的持久化支持。
  4. 密码加密(Cryptography):提供密码加密和解密的支持,确保用户的密码在存储和传输过程中的安全性。
  5. Web支持:提供与Web应用程序集成的支持,包括集成主流Web框架(如Spring、Struts)和处理Web请求的过滤器等。

Shiro主要组件及相互作用:

  1. Subject(主体):

    • Subject 表示当前正在与应用程序交互的用户。可以是一个人、设备或其他系统实体。
    • Subject 封装了用户的身份和相关的安全操作,如登录、注销、权限检查等。
  2. SecurityManager(安全管理器):

    • SecurityManager 是 Shiro 的核心组件,负责协调和管理所有的安全操作。
    • SecurityManager 管理一个或多个 Realms,用于进行身份验证和授权。
  3. Realm(域):

    • Realm 是连接 Shiro 和安全数据源(如数据库、LDAP 等)的桥梁。
    • Realm 负责从数据源中获取用户的身份和权限信息,并提供给 SecurityManager 进行验证和授权操作。
  4. Authenticator(身份验证器):

    • Authenticator 负责对用户进行身份验证。
    • Authenticator 使用 Realm 获取用户的身份信息,并将其与用户提供的凭据进行比较,以确定用户是否合法。
  5. Authorizer(授权器):

    • Authorizer 负责对用户进行授权,确定用户是否有权访问特定资源。
    • Authorizer 使用 Realm 获取用户的角色和权限信息,并与应用程序定义的角色和权限进行匹配,以决定用户是否被授权访问资源。
  6. SessionManager(会话管理器):

    • SessionManager 负责管理用户的会话。
    • SessionManager 创建、维护和关闭用户会话,并提供会话的持久化支持。
  7. SessionDAO(会话数据访问对象):

    • SessionDAO 是用于会话数据的读取和存储的接口。
    • SessionDAO 与数据库或其他存储介质交互,将会话数据持久化或从持久化存储中读取会话数据。

  这些组件相互协作,形成了 Shiro 的安全框架。Subject 通过 SecurityManager 进行身份验证和授权操作,SecurityManager 使用 Realm 获取用户的身份和权限信息。而我们需要实现Realms的Authentication 和 Authorization。Authenticator 负责身份验证,Authorizer 负责授权,SessionManager 负责会话管理。SessionDAO 则提供会话数据的读取和存储支持。通过这

种相互作用,Shiro 提供了完善的安全功能,保护应用程序的安全性。

Shiro 认证过程:

  1. 用户提交身份信息:用户在应用程序的登录页面输入用户名和密码,并提交身份信息。
  2. Subject 提交身份信息:应用程序接收到用户提交的身份信息后,将其封装为 Subject 对象。
  3. SecurityManager 开始认证:SecurityManager 是 Shiro 的核心组件,负责协调和管理所有的安全操作。它接收到 Subject 提交的身份信息后,开始进行身份验证。
  4. SecurityManager 调用 Authenticator 进行身份验证:SecurityManager 会调用配置好的 Authenticator 进行身份验证。
  5. Authenticator 获取身份信息:Authenticator 使用 Realm(可能是单个 Realm 或多个 Realm 的组合)从数据源中获取用户的身份信息。
  6. Realm 获取用户身份信息:Realm 是连接 Shiro 和安全数据源的桥梁。它根据配置的方式(如数据库、LDAP 等)获取用户的身份信息。
  7. Authenticator 进行身份匹配:Authenticator 将用户提交的身份信息和 Realm 获取到的用户身份信息进行匹配,以确定用户是否合法。
  8. 认证结果返回给 SecurityManager:Authenticator 将认证结果(通过或失败)返回给 SecurityManager。
  9. SecurityManager 处理认证结果:SecurityManager 根据认证结果,如果认证成功,则将用户标记为已认证状态,并将用户的身份信息存储在 Subject 中供以后使用。如果认证失败,则抛出相应的异常。
  10. 认证结果返回给应用程序:SecurityManager 将认证结果返回给应用程序,应用程序可以根据认证结果决定如何处理。

Shiro 授权过程:

    1. 用户发起访问请求:
      用户在应用程序中发起对某个资源的访问请求,例如访问一个特定的 URL 或执行某个操作。

    2. Subject 发起授权请求:
      Subject 对象封装了当前用户的身份信息和相关的安全操作。当用户发起访问请求时,Subject 对象会将授权请求发送给 SecurityManager。

    3. SecurityManager 开始授权:
      SecurityManager 是 Shiro 的核心组件,负责协调和管理所有的安全操作。它接收到 Subject 的授权请求后,开始进行授权处理。

    4. SecurityManager 调用 Authorizer 进行授权:
      SecurityManager 会调用配置好的 Authorizer 进行授权操作。

    5. Authorizer 获取用户角色和权限信息:
      Authorizer 使用 Realm(可能是单个 Realm 或多个 Realm 的组合)从数据源中获取当前用户的角色和权限信息。

    6. Authorizer 进行角色和权限匹配:
      Authorizer 将用户的角色和权限信息与应用程序定义的角色和权限进行匹配,以确定用户是否有权访问请求的资源。

    7. 授权结果返回给 SecurityManager:
      Authorizer 将授权结果(允许访问或拒绝访问)返回给 SecurityManager。

    8. SecurityManager 处理授权结果:
      SecurityManager 根据授权结果,如果授权成功,则允许用户访问请求的资源。如果授权失败,则抛出相应的异常或采取其他处理措施。

    9. 授权结果返回给应用程序:
      SecurityManager 将授权结果返回给应用程序,应用程序可以根据授权结果决定如何处理用户的访问请求。

       


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

亚马逊悄悄创建广告产品团队,并将自己定位为广告领域的有力竞争者。

据外媒报道,为了加速广告收入的增长,亚马逊正在采取战略举措,建立一个专门面向发布商的广告产品团队。这家零售巨头正在为其新成立的“PubTech”团队(亚马逊广告的一个部门)招募人才。目前,亚马逊“PubTech…

对于d3dcompiler_47.dll丢失问题,几种详细解决方法

d3dcompiler_47.dll是Direct3D编译器的动态链接库文件,它是DirectX的一部分。DirectX是由微软开发的一组应用程序接口(API),用于在Windows操作系统上实现多媒体和游戏的高性能图形和声音效果。d3dcompiler_47.dll的作用是编译Dire…

虹科展会 | 自动驾驶展品:上海汽车测试展精彩回顾

2023年8月9日-8月11日,上海国际汽车测试及质量监控博览会在上海圆满落幕。本次展会提供了一个了解最新汽车测试及质量监控技术、产品和趋势的机会,同时也是汽车测试及质量监控领域的专业人士和业内人士的重要交流平台。 雅名特是虹科旗下子公司&#xff…

服务器数据恢复-RAID5多块磁盘离线导致崩溃的数据恢复案例

服务器数据恢复环境: DELL POWEREDGE某型号服务器中有一组由6块SCSI硬盘组建的RAID5阵列,LINUX REDHAT操作系统,EXT3文件系统,存放图片文件。 服务器故障&分析: 服务器raid5阵列中有一块硬盘离线,管理员…

MySQL中按月统计并逐月累加统计值的几种写法

有时候,我们可能有这样的场景,需要将销量按月统计,并且按月逐月累加。写惯了GROUP BY,按月统计倒是小case,但是逐月累加实现起来,要稍微麻烦一点。下面就整理几种写法,以备不时之需。 本月第一天 -- 本月第一天 SELE…

改造旧项目-长安分局人事费用管理系统

一、系统环境搭建 1、搭建前台环境 vue3vite构建项目复制“银税系统”页面结构,包括:路由、vuex存储、菜单、登录(复制一个干净的空架子) 2、搭建后台环境 新三大框架 SSMP聚合工程:common、admin,新的…

jmeter提取token方式以及设置成全局变量(跨线程组传token值)方式

前言 今天Darren洋教大家如何使用jmeter中的插件来进行token值的提取与调用,今天Darren洋介绍两种jmeter提取token值的方式,一种是在当前线程组中直接提取token值,一种是跨线程组的方式进行token值的提取并调用给不同线程组里的HTTP接口使用。…

用户端Web自动化测试-L1

目录: Web自动化测试价值与体系环境安装与使用自动化用例录制自动化测试用例结构分析web浏览器控制常见控件定位方法强制等待与隐式等待常见控件交互方法自动化测试定位策略搜索功能自动化测试用户端Web自动化测试 1.Web自动化测试价值与体系 功能测试场景: UI 自…

三个月从零入门深度学习,保姆级学习路线图!

小伙伴们大家好,这里是长沙图灵教育,我们从2001年开始进入教育行业,立足泛IT类职业教育,以打造新兴高新技术人才为宗旨,致力于成为优质的职业教育内容提供商;于2017年正式成立图灵, 在线教育有限公司。 到…

IDEA创建项目常见问题

1.IDEA修改maven路径无效 创建spring项目,Maven导入报错,无法正常导入jar报,发现setting中设置的maven路径不是自己下载的路径,修改后无效。运行之后maven路径又恢复为其默认的路径 解决方案: 删除.mvn文件&#xff0…

2023年测试岗分析,功能/自动化测试/测试开发,你会选哪个?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 功能测试关注点比…

iTOP-3568开发板使用OpenCV处理图像-颜色转换

本小节代码在配套资料“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程 \04_OpenCV 开发配套资料\05”目录下,如下图所示: cv2.cvtColor()函数功能: 将一幅图像从一个色彩空间转换到另一个色彩空间。 函数原型: cv2.cvt…

Springboot 实践(1)MyEclipse2019创建maven工程

项目讲解步骤,基于本机已经正确安装Java 1.8.0及MyEclipse2019的基础之上,Java及MyEclipse的安装,请参考其他相关文档,Springboot 实践文稿不再赘述。项目创建讲解马上开始。 一、首先打开MyEclipse2019,进入工作空间选…

Jetpack Compose是如何决定哪块代码进行重组的?

作者:bytebeats Jetpack Compose重组的作用域 几个月前, 我开始在生产级应用中使用Jetpack Compose, 当然是在编写了一些"Jetpack Compose Hello World项目"作为示例应用之后, 当然之后我放弃了所有这些项目. 在生产级应用中使用Jetpack Compose相当具有…

postman入门基础 —— 接口测试流程

一、编写接口测试计划 接口测试计划和功能测试计划目标一致,都是为了确认需求、确定测试环境、确定测试方法,为设计测试用例做准备,初步制定接口测试进度方案。一般来说,接口测试计划包括概述、测试资源、测试功能、测试重点、测试…

数据结构之队列详解(包含例题)

一、队列的概念 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操…

l2a股接口从哪几方面测评?(l2行情接口)

股票数据接口是一种用于获取、传输和处理股票市场相关数据的软件接口。l2a股接口提供了一种连接股票市场数据源和数据使用者之间的通道,允许开发者通过编程方式获取股票行情数据、交易数据和相关信息等。 股票数据接口主要有两种类型:实时行情数据接口和…

SPI协议个人记录

SPI协议 SPI(Serial Peripheral Interface)是一种同步串行接口技术,由Motorola公司推出。SPI总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信和数据交换。外围设备包括FLASHRAM、A/D转换器、网络控制器…

时序预测-Informer简介

文章目录 Informer介绍1. Transformer存在的问题2. Informer研究背景3. Informer 整体架构3.1 ProbSparse Self-attention3.2 Self-attention Distilling3.3 Generative Style Decoder 4. Informer的实验性能5. 相关资料 Informer介绍 1. Transformer存在的问题 Informer实质…

SysML V1.2 Ports and Flows

概述 本章介绍了流端口,它们允许在块和部件之间传输物品流,以及标准端口,它们允许在块和部件上调用服务。端口是块或部件与其环境之间的交互点,通过连接器与其他端口相连。指定系统元素上的这些端口的主要动机是允许设计具有明确…