shiro框架基本概念介绍

目录

什么是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】

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

funbox3靶场渗透笔记

funbox3靶场渗透笔记 靶机地址 https://download.vulnhub.com/funbox/Funbox3.ova 信息收集 fscan找主机ip192.168.177.199 .\fscan64.exe -h 192.168.177.0/24___ _/ _ \ ___ ___ _ __ __ _ ___| | __/ /_\/____/ __|/ __| __/ _ |/ …

单源最短路的扩展应用

选择最佳线路 有一天,琪琪想乘坐公交车去拜访她的一位朋友。 由于琪琪非常容易晕车,所以她想尽快到达朋友家。 现在给定你一张城市交通路线图,上面包含城市的公交站台以及公交线路的具体分布。 已知城市中共包含 n 个车站(编号…

Azure概念介绍

云计算定义 云计算是一种使用网络进行存储和处理数据的计算方式。它通过将数据和应用程序存储在云端服务器上,使用户能够通过互联网访问和使用这些资源,而无需依赖于本地硬件和软件。 发展历史 云计算的概念最早可以追溯到20世纪60年代的时候&#x…

Stable Diffusion WebUI安装和使用教程(Windows)

目录 下载Stable Diffusion WebUI运行安装程序,双击webui.bat界面启动插件安装(github)模型下载(有些需要魔法)安装过程遇到的大坑总结参考的博客 整个过程坑巨多,我花了一个晚上的时间才全部搞定,本教程针对有编程基础…

网络设备(防火墙、路由器、交换机)日志分析监控

外围网络设备(如防火墙、路由器、交换机等)是关键组件,因为它们控制进出公司网络的流量。因此,监视这些设备的活动有助于 IT 管理员解决操作问题,并保护网络免受攻击者的攻击。通过收集和分析这些设备的日志来监控这些…

苹果Mac像Windows一样使用

一、将磁盘访问设置的像Windows一样: 1.1、点击任务栏第一个按钮打开“访达”,点击菜单栏上的访达-偏好设置: 1.2、勾选“硬盘”,这样macOS的桌面上就会显示一个本地磁盘,之后重命名为磁盘根,相当于window…

部署Springboot项目注意事项

步骤 步骤 1:将数据库内容在云服务器上的数据库部署一份 我使用mariadb;会出现一些不兼容现象;我们需要把默认值删掉 2:配置文件你得修改地方 a:linux是磁盘区分(像我自己项目用来储存验证码的文件我们得换这个配置;…

Spring_AOP

一、AOP简介 AOP,Aspect Oriented Programming,面向切面编程,是对面向对象编程0OP的升华。OOP是纵向对一个事物的抽象,一个对象包括静态的属性信息,包括动态的方法信息等。而AOP是横向的对不同事物的抽象,属性与属性、方法与方法、对象与对象…

cs231n assignment2 q5 PyTorch on CIFAR-10

文章目录 嫌啰嗦直接看源码Q5 :PyTorch on CIFAR-10three_layer_convnet题面解析代码输出 Training a ConvNet题面解析代码输出 ThreeLayerConvNet题面解析代码输出 Train a Three-Layer ConvNet题面解析代码输出 Sequential API: Three-Layer ConvNet题面解析代码输出 CIFAR-1…

【MongoDB】解决ProxmoxVE下CentOS7虚拟机安装MongoDB6后启动失败的问题

目录 安装步骤: 2.1 配置yum源 2.2 安装MongoDB 2.3 启 动MongoDB ProxmoxVE上新装的CentOS7.4虚拟机,安装MongoDB6。 安装步骤: 2.1 配置yum源 # 创建mongodb yum源(https://www.mongodb.com/docs/manual/tutorial/insta…

27岁了学plc还来得及吗?

如果你是学电气或者自控,完全没问题,PLC其实只是你的理解力的问题,真正底层的,都帮你打包了,你直接用就是。问题只是:你要能透彻理解 如果你从一个完全陌生的行业转过来,完全没必要。如果本身就…

[数据分析与可视化] Python绘制数据地图5-MovingPandas绘图实例

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。关于MovingPandas的使用见文章:MovingPandas入门指北,本文主要介绍三个MovingPandas的绘图实例。 MovingPandas官方仓库地址为:mo…

自定义批量修改图像位深度

什么是图像位深度??? 图像位深度(Bit Depth)是指图像中每个像素所占的比特数,它决定了图像能够表示的颜色数量和亮度层级。 简单来说: 位深度越高,每个像素所能表示的颜色数和亮度等级越多。位深度越低,每个像素所能表示的颜色数和亮度等级…

容器安全的常见风险与防护实践

运行在云平台上的容器产品,因为具备一个完整的可移植应用程序环境,能够帮助用户轻松地完成对应用程序的开关控制,提升应用程序的敏捷性,同时节约企业的IT建设成本。在巨大优势作用下,容器产品的采用率在2021年达到了新…

恒运资本:算力股爆发,地产股全线下挫,海外机构调研股出炉

60股近期获海外组织调研,医疗龙头最受组织重视。 今日早盘三大指数全线低开,延续调整走势,上证指数跌1.01%,深证成指跌1.35%,创业板指跌1.6%。AI概念股逆市走强,算力、数据要素等方向领涨,朗威股…

通达信接口调用过程需要借助什么?

通达信接口是一种用于获取、传输和处理股票市场相关数据的软件接口,以提供了一种连接股票市场数据源和数据使用者之间的通道,允许开发者通过编程方式获取股票行情数据、交易数据和相关信息等。如果调用通达信接口,需要借助以下几个方面的工具…

竞赛项目 深度学习的动物识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

【Linux】网络层、数据链路层、DNS、ICMP协议、NAT技术

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录 👉网络层&a…

SQL | 检索数据

1-检索数据 1.1-检索单个列 SELECT prod_name FROM Products; 上述SELECT语句从Products表中检索一个名为prod_name的列。 所要查找的列在select后面,from关键字指出从那个表查询数据。 输出如下: prod_name8 inch teddy bear12 inch teddy bear18…

【Unity3D】Shader Graph节点

1 前言 Shader Graph 16.0.3 中有 208 个 Node(节点),本文梳理了 Shader Graph 中大部分 Node 的释义,官方介绍详见→Node-Library。 Shader Graph 通过图像的形式表达了顶点变换和片元着色流程,其背后都是一些列的数学…