tomcat对于web.xml的security-constraint使用的处理机制

知识点

web.xml中<security-constraint> 的子元素 <http-method> 是可选的,如果没有 <http-method> 元素,这表示将禁止所有 HTTP 方法访问相应的资源。
子元素 <auth-constraint> 需要和 <login-config> 相配合使用,但可以被单独使用。如果没有 <auth-constraint> 子元素,这表明任何身份的用户都可以访问相应的资源。也就是说,如果 <security-constraint> 中没有 <auth-constraint> 子元素的话,配置实际上是不起中用的。如果加入了 <auth-constraint> 子元素,但是其内容为空,这表示所有身份的用户都被禁止访问相应的资源。 

 

问题

对于同一个url-pattern,在web.xml出现2个<security-constraint>,一个是对该url-pattern进行了role的限制,一个没有限制role,会如何?

 

实践

一个是对该url-pattern进行了role的限制,即配置auth-constraint

如:

<security-constraint><web-resource-collection><web-resource-name>test2</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><auth-constraint><role-name>tomcat1</role-name></auth-constraint></security-constraint> 



    
一个是对该url-pattern没有进行role的限制
如:
 
 

<security-constraint><web-resource-collection><web-resource-name>test3</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection></security-constraint> 



  
  
对于tomcat而言,在org.apache.catalina.authenticator.AuthenticatorBase认证类中

/*** Enforce the security restrictions in the web application deployment* descriptor of our associated Context.** @param request Request to be processed* @param response Response to be processed** @exception IOException if an input/output error occurs* @exception ServletException if thrown by a processing element*/@Overridepublic void invoke(Request request, Response response)throws IOException, ServletException {....// Since authenticate modifies the response on failure,// we have to check for allow-from-all first.//boolean authRequired;if (constraints == null) {authRequired = false;} else {//有安全限制authRequired = true;for(i=0; i < constraints.length && authRequired; i++) {if(!constraints[i].getAuthConstraint()) {//如果不需要认证限制authRequired = false;//则不需要认证} else if(!constraints[i].getAllRoles()) {//如果不是*,即所有角色的话String [] roles = constraints[i].findAuthRoles();if(roles == null || roles.length == 0) { //只要此url-pattern有一个限制没有控制角色,则满足次url-pattern的url可以被任意角色和匿名用户访问authRequired = false;//则不需要认证}}}}      ......

 

结论

所以按照上面同时配置同一个url-pattern,不同安全限制,只要有一个不限制角色,则此url-pattern不受角色限制,满足次url-pattern的url可以被任意角色和匿名用户访问

转载于:https://www.cnblogs.com/yangjun1120/archive/2012/11/22/2782322.html

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

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

相关文章

重磅公开!36个高考数学破题大招

前段时间&#xff0c;超模君发了关于极值点偏移问题的总结资料&#xff0c;朋友们都觉得内容整合得十分详细。同时&#xff0c;也有不少很多朋友留言说希望有其他高考数学常考问题的解题总结。确实&#xff0c;毕竟高考涉及的内容非常多&#xff0c;比如说参数范围问题、数列求…

Linux服务器数据备份

2019独角兽企业重金招聘Python工程师标准>>> 服务器上的数据是如此重要&#xff0c;以至于我们定期要对其进行备份&#xff01;这里讲一下mysql的备份和使用rsync同步服务器上的文件&#xff0c;从而实现多台linux服务器之间的文件的备份。 一 Mysql备份 mysql的备份…

Serilog 日志框架如何自动删除超过 N 天的日志 ?

咨询区 JohnB&#xff1a;我的程序使用的日志框架是 Serilog&#xff0c;我是按天分割日志文件的&#xff0c;由于每日文件都比较大&#xff0c;我经常手工删除&#xff0c;但这样做很傻&#xff0c;请问日志框架有没有自动帮我删除 N 天之间的日志呢&#xff1f;回答区 someth…

linux进程通讯-纯文本文件

三)强制性加锁的实现1)对文件加锁有两种方式:劝告性锁和强制性锁.2)劝告性锁工作时,每个进程都要对文件进行读或写之前调用lockf对文件加锁,如果一个进程忘记调用lockf,那么锁协议将会被忽视3)强制性锁工作时,它将使任何一个想要访问已被加锁的文件的进程都堵塞在读或写队列上.…

java 数组长度 可变_java基础之集合长度可变的实现原理

首先我们要明白java中的集合Collection,List,ArrayList之间的关系:ArrayList是具体的实现类,实现了List接口List是接口,继承了Collection接口List继承了Collection接口 但是List是可以重复的并且有序的集合 Collection是不可重复且无序的这里我们先讲一下List集合:List接口不…

与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......

全世界只有3.14 % 的人关注了爆炸吧知识从武汉新冠疫情爆发到如今&#xff0c;陈薇没有一天休息。短短半年间&#xff0c;54岁的她头发从黑到白&#xff0c;也哭了好几次。刚去武汉-现在陈薇的母亲也在电视上看到了女儿的变化&#xff1a;“她变老了&#xff0c;都有白头发了。…

Windows7 IIS7.5 HTTP Error 503 The service is unavailable 另类解决方案

这篇文章是在你看了别的解决方案仍然解决不了之后才有用。 所以再未用别的解决方案之前&#xff0c;用了该解决方案依然无效的话&#xff0c;请自己看着办。 原创&#xff1a; .net2.0和.net3.5的应用程序池请在开始菜单打开VS2005或者VS2008的目录下的Visual Studio Tools文件…

总是想得太简单?试试我的方法

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「213」篇原创敬上大家好&#xff0c;我是Z哥。你是不是有时候遇到一些问题&#xff0c;脑子会很蒙&#xff0c;没有任何头绪&#xff1f;但是觉得身边的那些高手们…

Centos-启动network报错RTNETLINK answers: File exists解决方法

背景&#xff1a;今天在Vcenter上&#xff0c;用模板克隆了一个虚拟机&#xff0c;启动之后&#xff0c;网卡启动不了&#xff0c;报错如下&#xff1a;RTNETLINK answers: File exists说明&#xff1a; 环境 Centos6.6_X64 &#xff1b; 网卡两个原因&#xff1a; 由于用模板…

《信息存储与管理》读书笔记7 存储虚拟化

1、内存虚拟化 2、网络虚拟化 3、服务器虚拟化 4、存储虚拟化 1&#xff09;块级存储虚拟化 2&#xff09;文件级虚拟化 PS&#xff1a;详细内容请看虚拟化一板块转载于:https://blog.51cto.com/nppstudy/725855

java ready_Java PushbackReader ready()用法及代码示例

Java中的PushbackReader类的ready()方法用于检查此PushbackReader是否准备就绪。它返回一个布尔值&#xff0c;该值指示阅读器是否准备就绪。用法:public void ready()参数&#xff1a;此方法不接受任何参数返回值&#xff1a;此方法返回一个布尔值&#xff0c;该值指示此Pushb…

php Collection类的设计

用。net开发已经很多年了&#xff0c;最近接触到php&#xff0c;发现php也很好玩。不过发现它里面没有集合Collection类&#xff0c;只有数组&#xff0c;并且数组很强。这里我用数组来包装成一个集合Collection&#xff0c;代码如下&#xff1a; class Collection{private $_m…

不当败家子的原因......

1 实在是太真实&#xff01;▼2 有钱就是可以为所欲为&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 在哪都要有仪式感&#xff01;▼4 送自己去孤儿院......▼5 万万没想到...&#xff08;图源网络&#xff0c;侵删&#xff09;▼6 这都能催的&#xff1f;▼…

如何将 Linq 的查询结果转为 HashSet ?

咨询区 Jamie&#xff1a;我的类中有一个 ISet 类型的属性&#xff0c;我想将 linq 查询的结果赋给它&#xff0c;因为是 ISet 类型&#xff0c;所以我不知道是否有高效的方法将 linq 查询结果给之&#xff1f;简单来说&#xff0c;就像下面这样&#xff1a;ISet<T> foo …

ecs使用脚本安装oracle

ECS最低配置&#xff1a;CPU: 2核 内存&#xff1a;2G 数据盘&#xff1a;20G安装脚本分为 oracle11g 4个小版本&#xff0c;下载地址&#xff1a; http://zy-res.oss-cn-hangzhou-internal.aliyuncs.com/oracle/oracle11201.shhttp://zy-res.oss-cn-hangzhou-internal.aliyun…

我不信奉Scrum,我信奉敏捷

Scrum一直以来争论不断。虽然创始人Ken在演讲中曾说过即使是白痴也可以用Scrum&#xff0c;但是依然有很多人认为Scrum对团队成员的素质要求非常高。另据统计&#xff0c;75%以上的Scrum都可以称得上失败。 去年十月&#xff0c;有幸参加了Outsofting鲍央舟老师的Scrum培训。培…

仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统

需求分析基于Spring, SpringMVC, Mybatis 实现一个类似仿京东商城的3C电子商城系统, 能够实现商品管理与展示, 加入购物车, 支付购买等功能, 项目采用java技术进行开发。运行环境java, jdk1.8,tomcat8.5,mysql5.6,EclispseEE项目技术java, spring springmvc, mybatis, bootstra…

跨浏览器开发:CSS代码的金科玉律

作为Web设计师&#xff0c;你的网站在各种浏览器中有完全一样的表现是很多人的目标&#xff0c;然而这是一个永远无法真正实现的目标&#xff0c;很多人认为&#xff0c;完美的跨浏览器兼容并不必要&#xff0c;这样说虽然没错&#xff0c;但在很多情形&#xff0c;一种近似的兼…

Refit结合Polly访问ASP.NET Core Web API

前言在.NET Core应用中访问ASP.NET Core Web API接口&#xff0c;常用的方式是使用IHttpClientFactory生成HttpClient实例&#xff0c;并通过结合Polly策略&#xff0c;以实现重试&#xff0c;熔断等机制。在本文中&#xff0c;我们将介绍如何使用Refit&#xff0c;结合Polly访…

10个经典的爆炸化学反应,个个都是你惹不起的“暴脾气”

全世界只有3.14 % 的人关注了爆炸吧知识没有放过火&#xff0c;没有爆炸过&#xff0c;就不算真正学化学的。还有谁能比化学狗们的胆子更大、回忆更深刻吗&#xff1f;化学狗们能活到现在简直是个奇迹&#xff5e;&#xff5e;&#xff5e;懂的就默默转了吧&#xff01;小编整理…