首页 > 其他分享 >安全框架·shiro

安全框架·shiro

时间:2023-05-19 18:44:37浏览次数:38  
标签:管理器 框架 用户 认证 安全 Shiro 授权 realm shiro

官网:shiro.apache.org

目录:

shiro 概念

Shiro 框架认证拦截实现

Shiro 框架认证业务实现

Shiro 中授权过程的实现

授权业务 DAO 实现


Shiro安全框架
1.  shiro概念:

  Shiro是apache旗下一个开源的安全框架,可以将软件中安全认证相关的功能提取出来,实现用户身份认证,权限授权,加密功能,组成了一个通用的安全框架

 

官方截图
Subject: 主体对象,负责提交用户的认证以及授权信息

SecurityManager: 安全管理器,负责认证,授权等业务实现

Realm: 领域对象,负责从数据层获取数据


Shiro详细架构:

 


Subject: 主体对象,负责提交用户的认证以及授权信息

SecurityManager: 安全管理器,负责认证,授权等业务实现,是shiro的绝对核心,用来管理组件

Authenticator: 认证管理器,负责认证操作

Authorizer: 授权管理器,负责授权检测

SessionManager: 会话管理器,负责创建用户session,以及管理session生命周期

SessionDao: SessionManager对象执行的操作进行持久化

CacheManager: 缓存管理器,提供创建缓存的实例,维护缓存的生命周期

Cryptography: 加密管理器,提供了一些加密方式


Shiro框架认证拦截实现

1.  添加依赖


2.  Shiro核心对象的配置:

 2.1 创建SpringShiroConfig类,为shiro添加配置

2.2 在SpringShiroConfig类中添加一个securityManager对象的配置


2.3在shiro配置类中添加ShiroFilterFactoryBean对象的配置,可以通过此对象设置匿名访问的资源,认证访问的资源

 

 

Shiro框架认证业务实现

 身份认证判断用户是否为系统的合法用户,用户访问系统资源的认证(对用户身份信息的认证)


其中认证流程如下:

1. 系统调用subject的login方法将用户信息提交给securityManager

2. securityManager会将认证操作委托给认证管理器Authenticator

3. Authenticator将用户输入的身份信息传递给realm对象

4. realm对象访问数据库层获取用户信息然后对信息进行封装并且返回

5. Authenticator对realm对象的返回信息进行身份认证

 

realm==>SysUserRealm

SysUserRealm.java


SysUserRealm.java


SysUserController.java

GlobalExceptionHandler.java

Shiro 中授权过程的实现

判断用户是否允许访问某一个资源


授权流程:

1. 系统调用subject的相关方法提交用户信息给securityManager

2. securityManager将授权操作委托给authorizer授权管理器对象

3. authorizer将用户的权限信息传给realm

4. realm去访问数据层获取用户信息,再将信息进行比对

5. authorizer对返回的realm对象返回的信息进行对比


原理:

授权底层是用到了AOP,而且是原生的AOP

访问(调用)某一个方法的时候,判断有没有调用这个方法的权限

授权访问,授权方法是一个切入点方法,增强的业务判断有没有调用这个方法的权限

访问某一个方法所需要的权限交给securityManager

组件authorizer去校验你这个用户到底有没有访问这个方法的权限

 

Subject提交的是访问这个方法需要什么权限

Realm对象去查询用户有什么权限 是否包含访问这个方法所需要的权限

如果包含则授权访问,否则抛异常


授权业务DAO实现

实现方法1:进行多次单表查询(下面是示例)

实现方法2:多表联合查询

1.   基于登录用户id查询对应的角色ID(SysUserRoleDao)


2.   再基于查询出来的角色ID找到相应的菜单ID  (SysRoleMenuDao)

 

3.     再基于查询出来的菜单ID查询权限标识  (SysMenuDao)

 

 


realm==>ShiroUseRealm

ShiroUseRealm.java

service==>impl==>SysLogServiceImpl

作者:羽猫君 https://www.bilibili.com/read/cv19157824 出处:bilibili

标签:管理器,框架,用户,认证,安全,Shiro,授权,realm,shiro
From: https://www.cnblogs.com/gaoyanbing/p/17416033.html

相关文章

  • AI为文档图像安全注入新力量
    Hello大家好。我是Dream。随着人工智能和大数据技术的快速发展,人们对于文档图像安全的关注度越来越高。尤其是在当下,AIGC取得了里程碑式的成绩,引发了市场广泛热烈的兴趣,扩散模型在内的关键技术取得突破,技术可用性显著提高,这让保护文档图像安全进程又迈上了一个新的阶段,如何保障......
  • 如何让数据安全管理工作化繁为简?uDSP 十问十答
    数据安全管理工作与国家数据安全、企业资产保护以及个人信息保护工作息息相关。复杂、多元、流通的数据也给数据安全带来了更多的威胁和挑战,如数据资产管理、分类分级问题,数据安全集中管控问题,数据共享与流通问题等。原点安全一体化数据安全平台uDSP致力于帮助企业将繁琐、繁重的......
  • 2017年全国大学生信息安全竞赛---wanna to see your hat?
    ======================================个人收获:1.SQL注入语句中用/**/代替空格  (虽然之前就知道)    =========================================  题目界面:  常规的点击连接查看页面看到接下来几个页面 没有什么特别的发现,同时也查看了网页的源码也没有什么发现。......
  • ​Cloud Studio 云端开发保障企业源代码安全
    为什么需要保证企业源代码安全随着时代的发展,各行各业的企业或多或少都会与软件源代码打交道,借助软件系统更好地提升企业办公效率,而软件的源代码也自然成了一种企业新型资产。如何确保企业源代码不外泄,成为了各个企业特别关心的痛点问题。这个问题存在已久,各个企业根据自身......
  • Blazor实战——Known框架快速开始
    Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。开源地址:https://gitee.com/known/Known1.安装项目模板并创建新项目打开命令行输入如下命令安装和创建。--安装模板dotnetnewinstallKnownTemplate--创建项目dotnetnewknow......
  • 老杜MyBatis框架从入门到精通(三)使用MyBatis完成CRUD
    mybatis做为目前国内最为流行的开源orm框架,我们平时在使用时会感受到其带来的诸多便利,但是很少去深入分析,mybatis源码代码量不多,功能丰富,是一个很好的学习样例,本系列文章就和大家一起来学习mybatis框架本系列笔记根据动力节点B站上老杜讲的mybatis教程整理~学习地址:https://www......
  • web安全为主的网页集合
    xrayGitHub-chaitin/xray:一款完善的安全评估工具,支持常见web安全问题扫描和自定义poc|使用之前务必先阅读文档vulhubVulhub-Docker-Composefileforvulnerabilityenvironment ......
  • java-raft框架之atomix进行分布式管理
    共识算法在一个分布式的系统中,管理各个节点的一致性(共识)一直是个很有难度的问题。在近几十年的发展中,于1990年诞生的Paxos算法是其中最为经典的代表,并一统江湖数几十载。如著名的zookeeper、chubby都是基于Paxos算法的经典应用。不过Paxos算法的复杂度和难以理解性,也吸引了一些大佬......
  • LKT6850安全MCU(二):系统架构
    LKT6850主系统由以下部分构成:两个驱动单元ARMCortexM0内核和系统总线(S-bus)DMA总线三个被动单元内部内部闪存存储器AHB到APB的桥(AHB2APBx),它连接所有的APB设备这些都是通过一个多级的AHB总线构架相互连接的。系统结构系统总线该总线连接ARMCortexM0内核的系统总线到总线矩阵......
  • Unix/Linux系统安全技术
    一:标识   Unix的各种管理功能都被限制在一个超级用户中,其功能和WindowsNT的管理员(Administrator)类似。作为超级用户可以控制一切,包括用户账号、文件和目录、网络资源。允许超级用户管理所有的资源的各类变化,或者只管理很小范围的重大变化。例如,每个账号都具有不同用户名、不同......