我的shiro之旅: 三 浅谈shiro的filter

shiro入门 Shiro简介 1、什么是Shiro Shiro是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理。借助 Shiro 易于理解的 API,您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。 2、Shiro核心架构 Subject Subject即主体,外部应用与subject进行交互,subject记录了当前的操作用户,将用户的概念理解为当前操作的主体。外部程序通过subject进行认证授权,而subject是通. 阅读详情

博客已移至 http://blog.gogl.top

 

前段时间比较懒,项目也有些紧,没有写什么东西。现在再对Shiro做一些整理。上一篇主要介绍了一个完整而又简单的shiro集成到项目的例子,主要是spring项目。这篇文章,想谈一下关于shiro的filter,这需要读者对shiro有一定的理解,至少有用过shiro。

 

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager" />
		<property name="loginUrl" value="/login" />
		<property name="successUrl" value="/home" />
		<property name="unauthorizedUrl" value="/unauthorized" />
		<!-- The 'filters' property is usually not necessary unless performing 
			an override, which we want to do here (make authc point to a PassthruAuthenticationFilter 
			instead of the default FormAuthenticationFilter: -->
		<!-- <property name="filters">
			<map>
				<entry key="authc">
					<bean class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter" />
				</entry>
			</map>
		</property> -->
		<property name="filterChainDefinitions">
			<value>
				/admin = authc,roles[admin]
				/edit = authc,perms[admin:edit]
				/home = user
				/** = anon
			</value>
		</property>
	</bean>

从上面的配置我们可以看到,当用户没有登录的时候,会重发一个login请求,引导用户去登录。当然,这个login请求做些什么工作,引导用户去那里,完全由开发者决定。successUrl是当用户登录成功,重发home请求,引导用户到主页。unauthorizedUrl指如果请求失败,重发/unauthorized请求,引导用户到认证异常错误页面。

 

Filter NameClass
anonorg.apache.shiro.web.filter.authc.AnonymousFilter
authcorg.apache.shiro.web.filter.authc.FormAuthenticationFilter
authcBasicorg.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
logoutorg.apache.shiro.web.filter.authc.LogoutFilter
noSessionCreationorg.apache.shiro.web.filter.session.NoSessionCreationFilter
permsorg.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
portorg.apache.shiro.web.filter.authz.PortFilter
restorg.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
rolesorg.apache.shiro.web.filter.authz.RolesAuthorizationFilter
sslorg.apache.shiro.web.filter.authz.SslFilter
userorg.apache.shiro.web.filter.authc.UserFilter


以上是shiro的一些Filter,如我们在filterChainDefinitions里配置了/admin=authc,roles[admin],那么/admin这个请求会由org.apache.shiro.web.filter.authc.FormAuthenticationFilter和org.apache.shiro.web.filter.authz.RolesAuthorizationFilter这两个filter来处理,其中authc,roles只是filter的别名。如要更改别名,可以通过filters来改变。如上面的配置

		<property name="filters">
			<map>
				<entry key="authc">
					<bean class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter" />
				</entry>
			</map>
		</property><property name="filters">
			<map>
				<entry key="authc">
					<bean class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter" />
				</entry>
			</map>
		</property>

把PassThruAuthenticationFilter添加别名为authc,这时/admin请求会交给PassThruAuthenticationFilter处理,替换了原来由FormAuthenticationFilter来处理。

 

由此一来,如果有些特殊的请求需要特殊处理,就可以自己写一个filter,添加一个别名,如:

 

		<property name="filters">
			<map>
				<entry key="new">
					<bean class="org.xx.xx.NewFilter" />
				</entry>
			</map>
		</property><property name="filters">
			<map>
				<entry key="new">
					<bean class="org.xx.xx.NewFilter" />
				</entry>
			</map>
		</property>

请求用/new = new,这样/new请求交由NewFilter来处理。
 

 

 

Apache Shiro CVE-2020-1957认证绕过漏洞:原理剖析与实战复现 在Web应用安全中,认证与授权是保护敏感资源的核心机制。其原理通常基于请求路径的匹配与校验,通过安全框架拦截未授权访问。然而,当不同组件对同一请求的路径解析逻辑存在差异时,就会产生严重的安全漏洞,导致认证机制被绕过。这种“解析差异性漏洞”具有极高的技术价值和广泛的现实影响,常出现在Web服务器、安全框架与后端应用框架的协作边界。Apache Shiro作为Java领域广泛使用的安全框架,其CVE-2020-1957漏洞正是此类问题的典型代表。该漏洞源于Shiro的Ant风格路径匹配器与Spring MVC( 阅读详情

相关推荐

Shiro验证绕过漏洞CVE-2020-13933原理剖析与复现指南

在Web应用安全领域,权限验证是保护敏感资源的核心机制。其原理通常基于请求路径的模式匹配,通过过滤器链对特定URL模式实施访问控制。然而,当框架的路径解析逻辑与Servlet容器存在差异时,就可能产生验证绕过漏洞,导致安全防线失效。这类漏洞的技术价值在于揭示了安全框架底层实现与RFC规范协同的重要性。典型的应用场景包括Java Web应用中使用Apache Shiro等安全框架进行权限管理的系统。本文聚焦于CVE-2020-13933,这是一个经典的Shiro验证绕过漏洞,攻击者通过构造包含分号路径参数的请

weixin_33720956的博客 372

深入解析Apache Shiro Web集成:从Filter链到安全实战

在Java Web应用开发中,权限控制与安全管理是构建企业级应用的核心基础。其实现原理通常基于Servlet Filter机制,通过在请求处理链中插入安全过滤器,实现对资源的访问控制。这项技术的核心价值在于提供声明式、非侵入式的安全解决方案,能够有效分离业务逻辑与安全检查代码,提升系统的可维护性和安全性。典型的应用场景包括后台管理系统、金融交易平台、企业内部应用等需要细粒度权限控制的Web项目。本文聚焦于Apache Shiro框架的Web集成机制,深入剖析其Filter链设计、Session管理以及安全配

weixin_30655569的博客 330

从零开始:在Windows WSL中搭建Openfoam7+blastfoam2.0.0开发环境(避坑大全)

本文详细指导在Windows WSL中搭建OpenFOAM 7与BlastFOAM 2.0.0开发环境,重点解析了安装过程中的常见“坑点”,如编译模式不匹配导致的符号错误,并提供了从系统准备、软件部署到环境验证的完整解决方案,帮助开发者高效构建CFD与爆炸模拟开发平台。

stem5的博客 527

Shiro实现logout操作

这里我们通过配置Shiro的方式实现用户的登出操作! 1.继承Shiro包中的LogoutFilter类,并且重写preHandle方法 package com.shitong.service.impl; import org.apache.shiro.subject.Subject; import org.apache.shiro.web.filter.authc.LogoutFilter

ZZHMMD957 1万+

地质工程师必备:Dips软件从数据导入到主结构面分析的完整流程解析

本文详细解析了地质工程师使用Dips软件进行主结构面分析的完整流程。从数据准备与导入、结构面分组与扇形区划分,到主结构面计算与工程解读,系统阐述了如何将野外节理数据转化为控制岩体稳定性的关键信息。重点介绍了利用等值线图识别优势组、计算统计主值及其置信椭圆,并强调了地质判断与工程应用结合的重要性。

table的专栏 341

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 449

spring中 shiro logout 配置方式

有两种方式实现logout1. 普通的action中 实现自己的logout方法,取到Subject,然后logout这种需要在ShiroFilterFactoryBean 中配置 filterChainDefinitions对应的action的url为anon2. 使用shiro提供的logout filter需要定义 相应的bean然后将相应的url filter配置为logout如下。

m0_67403013的博客 626

matinal:S4 HANA 详解ACDOCA与BSEG的区别都在这了

当你在Coding Block中添加自定义字段的时候

matinal 當冬夜漸暖 。公众号:matinal 4582

Shiro退出机制是什么?

实现步骤如下,首先在Shiro配置文件下注明/logout=logout,这样当访问根路径logout时,可以直接跳转到logout的逻辑代码中去,在logout的contrller中需要利用session的 getAttributeNames方法进行获取内容,然后使用while循环调取session的删除方法将session作用域中的内容全部删除,然后再利用subject的api getsubject方法获取subject的内容,然后调取logout方法进行删除subject内容。

m0_65467786的博客 373

ERGM指数随机图模型全解析:从基础原理到R语言实操

从社交网络中的互惠、传递性和同质性等基本现象切入,介绍网络数据与传统回归分析的本质差异——边与边之间的依赖关系。指数随机图模型(ERGM)正是为刻画这种依赖结构而设计的统计框架,它通过指数族分布将网络结构效应显式建模,结合MCMC方法完成参数估计。ERGM在组织协作、传播扩散、生物生态等领域的应用日益广泛,其扩展模型TERGM、GERGM和多层ERGM进一步支持时序、权重与多重关系网络。本文系统梳理ERGM的理论基础、核心统计量、扩展模型选型及R语言实操要点,帮助研究者理解网络生成机制并完成收敛性诊断与结果

weixin_29050271的博客 364

S7-1200 PLC PID功能 | 调节PID参数

S7-1200 PLC PID功能 | 调节PID参数

Robot_PLC_HMI_Automation 1万+

我的shiro之旅:自定义filter

1. shiro的filter介绍 Filter Name Class anon org.apache.shiro.web.filter.authc.AnonymousFilter authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter authcBasic org

zhuchunyan_aijia的博客 1万+

200、从零搭建具身智能实验平台:硬件选型软件栈与调试

我一开始图便宜,3D打印了一个平行夹爪,结果抓取力不够,稍微重点的物体就滑落,而且开合控制延迟大,VLA模型输出的动作指令根本跟不上。如果你非要自己做,记住两个原则:一是用谐波减速器而不是直驱,二是加力传感器,哪怕是一个简单的电阻应变片也行——没有力反馈,你的夹爪就是个瞎子。我的建议是,如果你用的是UR5老款,ROS1的ur_modern_driver包更成熟,但如果你要跑最新的VLA框架,很多库已经不支持ROS1了。所以,保持耐心,多备份代码,多记录日志,少熬夜。毕竟,这条路上,我们都是摸着石头过河。

sundong_81的博客 39

我的shiro之旅: 四 自定义filter

博客已移至 http://blog.gogl.top 上一篇文章对shiro的filter作了一些简单的介绍,接一下写写息自定义shiro的filter。使用shiro的时候,比较常用的filter有anon,authc,roles和perms。当我们想定义某个链接是拥有某些权限的用户才可以访问的时候,我们可以这样定义。/xx = roles[A,B]。在shiro中,表示当前用户同时拥有A,B...

Dylan的博文 8139

Qt5.14.2开发Mqtt应用程序

然后,你就做不下去了…很明显,大部分博主写的东西不是缺头就是缺尾,带偏了许多读者。,因此我们需要clone的是这个分支版本,而不是这个默认的。然后将编译产物中include里的所有.h文件复制到。下载完后直接默认安装即可,这一步没什么好说的。看到了没,这个才是正确的操作方式,而主线的。信号来判断,自行实现自己的槽函数。然后选择构建方式,这里我选择的是。信号来判断自行实现自己的槽函数。信号来判断自行实现自己的槽函数。源代码,如下图所示,双击打开。收到下行消息时,可以通过连接。

Bruce.yang的嵌入式之旅 2310

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

我的shiro之旅: 十五 shiro 登录成功后,跳转到登录前的页面

很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面。如果用户是点击"登录"链接去到登录页面进行登录的,我们很容易跟踪用户的登录前的页面。比如,在"登录"链接后加一个url参数,如:ht

wangchaoqi1985的博客 2342

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

自定义shiro Filter

=============自定义shiro Filter。解决问题: ==一个action对应多个权限: ====添加分区时,不仅要有分区subArea权限,还要有区域Area的权限。 ===findAll()下拉框选择 分区所属的区域。 ===于是Spring配置shiro:如下: /areaAct...

FrankWeizq的博客 717

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

### shiro自定义filter【解决某个请求 需要同时拥有多种权限】

=============自定义shiro Filter。解决问题: ==一个action对应多个权限: ====添加分区时,不仅要有分区subArea权限,还要有区域Area的权限。 ===findAll()下拉框选择 分区所属的区域。 ===于是Spring配置shiro:如下: /areaAction_findAll.action = perms["areaAction","s

anyway, life must全力以赴 2872

Shiro 权限基础

Shiro 是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。本文就带领读者一睹 Shiro 的风采。 可能大家早先会见过 J-security,这个是 Shiro 的前身。在 2009 年 3 月初之前,这个安全框架叫做 J-security,由于某些原因,更名为 Shiro(或者 Ki,意为 Fortress),是 Apache 的孵化项目,鉴于本文编写时 Shiro 的还没有正式发布的版本,

my__shy的博客 575

(39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】

(本节提供源代码,在最下面可以下载)距上一个章节过了二个星期了,最近时间也是比较紧,一直没有时间可以写博客,今天难得有点时间,就说说Spring Boot如何集成Shiro吧。这个章节会比较复杂,牵涉到的技术点也会比较,如果没有Spring Boot基础的还是建议先学习基础,不然此博客看起来会比较费劲。好了废话不都说了,还是开始我们的Spring Boot Shiro之旅吧。还是依照之前的风格

杜海的博客 1187

Apache Shiro权限绕过漏洞CVE-2020-13933复现与深度解析

权限控制是Web应用安全的核心机制之一,它确保用户只能访问其被授权的资源。其基本原理是通过拦截器或过滤器对请求路径进行匹配和校验,常见的实现方式包括基于角色的访问控制(RBAC)和声明式安全框架。在Java生态中,Apache Shiro作为一个广泛使用的安全框架,提供了身份认证、授权、会话管理等关键功能,其路径匹配逻辑的严谨性直接关系到整个应用的安全边界。CVE-2020-13933漏洞正源于Shiro框架的AntPathMatcher组件在处理特定URL路径时,与后端Servlet容器(如Tomcat)

weixin_29323493的博客 201

将Shiro作为应用的权限基础框架

Shiro 是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。本文就带领读者一睹 Shiro 的风采。 可能大家早先会见过 J-security,这个是 Shiro 的前身。在 2009 年 3 月初之前,这个安全框架叫做 J-security,由于某些原因,更名为 Shiro(或

攻城狮Luke 786

shiro安全框架

原文:http://blog.youkuaiyun.com/boonya/article/details/8233303   可能大家早先会见过 J-security,这个是 Shiro 的前身。在 2009 年 3 月初之前,这个安全框架叫做 J-security,由于某些原因,更名为 Shiro(或者 Ki,意为 Fortress),是 Apache 的孵化项目,鉴于本文编写时 Shiro 的还没...

weixin_33976072的博客 91
上一篇: cas单点登录环境搭建
下一篇: 我的shiro之旅: 一 shiro简介
LHacker
博客等级 码龄17年 162粉丝 24原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值