`

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
     */
    @Override
    public 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可以被任意角色和匿名用户访问。

 

文章来源:http://blog.csdn.net/yangjun2/article/details/8211492

分享到:
评论

相关推荐

    详解Spring mvc的web.xml配置说明

    除了以上提到的配置,`web.xml`还可以包含错误页面定义、安全配置(如`&lt;security-constraint&gt;`)、本地化支持(`locale-encoding-mapping-list`)等。正确的配置有助于提升应用程序的性能、安全性和可维护性。理解并...

    为tomcat服务器配置https,tomcat需要设置的server.xml与web.xml配置

    在Tomcat的`conf`目录下,有两个主要的XML配置文件:`server.xml`和`web.xml`。`server.xml`是Tomcat的主要配置文件,而`web.xml`则定义了应用程序的行为。 在`server.xml`中,我们需要配置`&lt;Connector&gt;`元素来启用...

    webService添加basic验证

    2. **添加安全约束**:在`web.xml`中增加`&lt;security-constraint&gt;`元素来定义需要验证的资源。在这个例子中,通过`&lt;url-pattern&gt;`指定所有以`/services/*`开头的URL都必须经过验证。 3. **指定认证方式**:在`&lt;login...

    Tomcat中web.xml文件的详细说明

    在Java的Web应用中,Tomcat作为常用的Servlet容器,其配置文件`web.xml`起着至关重要的作用。它是Web应用程序的部署描述符,定义了应用的行为、组件、安全性和资源引用等信息。以下是对`web.xml`文件中各主要元素的...

    Tomcat 的安全方面设置 简单配置过程 说明

    这些配置通常是在`conf`目录下的`tomcat-users.xml`和`web.xml`文件中完成的。 #### 二、用户认证配置 用户认证是Tomcat安全配置的基础,通过设置用户名和密码来验证用户的合法性。配置文件`tomcat-users.xml`位于...

    web.xml配置详解

    Web.XML 配置详解 Web.XML 是一个部署描述符文件,...17. security-constraint 元素:制定应该保护的 URL,它与 login-config 元素联合使用。 这些元素都是可选的,可以省略掉某一元素,但不能把它放于不正确的位置。

    Web.xml常用元素

    ### Web.xml常用元素详解 `Web.xml`是Java Web应用程序中的核心配置文件,它用于配置应用程序的上下文信息、servlet映射、过滤器、监听器等...理解和掌握这些元素的使用,对于构建高效、安全的Web应用程序至关重要。

    web.xml元素详解

    `security-constraint`元素用于定义安全约束,包括对URL的访问控制策略,配合`login-config`元素使用,确保Web应用的安全性。 #### 19. Login-Config `login-config`元素用于配置身份验证机制,如表单认证、基本...

    apache-tomcat-9.0.34-src.zip

    6. **安全管理**:Tomcat的权限管理和角色认证机制,包括 Realm 和 Security Constraint 的实现。 7. **错误处理和日志记录**:Tomcat如何处理异常并记录日志信息,以及如何自定义这些行为。 8. **部署和热更新**:...

    web.xml详细说明

    ### Web.xml详细说明 #### 一、概述 `web.xml`是Java Web应用程序中的核心配置文件,用于...正确配置`web.xml`对于确保Web应用正常运行至关重要。开发者应当熟悉这些元素及其用途,以便更好地管理自己的Web应用程序。

    apache-tomcat-8.0.32.rar

    例如,使用`&lt;tomcat-users&gt;`元素定义用户和角色,使用`&lt;security-constraint&gt;`和`&lt;login-config&gt;`元素设置访问控制。 总的来说,Apache Tomcat 8.0.32是一个强大的Java Web服务器,它提供了对Servlet和JSP的全面...

    Tomcat-9.0.0.M21-windows-x86.zip

    6. **安全管理**:Tomcat支持多种安全配置,包括用户认证(通过`conf/tomcat-users.xml`)、角色授权(`conf/web.xml`中的 `&lt;security-constraint&gt;`元素)以及SSL/TLS加密通信。 7. **管理工具**:Tomcat自带了一个...

    tomcat禁止PUT等方法

    首先,我们需要在 web.xml 文件中添加一个 security-constraint 元素,该元素用于定义安全约束。然后,我们可以在 security-constraint 元素中添加一个 web-resource-collection 元素,该元素用于定义要保护的资源。...

    用web.xml控制Web应用的行为

    - **限制对Web资源的访问**:使用`&lt;security-constraint&gt;`元素定义安全约束,限制URL或资源的访问权限。 - **分配角色名**:`&lt;role-name&gt;`元素用于定义应用的角色,这些角色可以关联到用户的权限。 10. **控制...

    apache-tomcat-9.0.35-solr7.7.3.rar

    3. **配置Solr核心**:在`solr\WEB-INF\solr.xml`中定义你的Solr核心,这将是你的索引存储和处理的地方。你可以根据需求创建多个核心。 4. **启动Tomcat**:启动Tomcat服务,访问`http://localhost:8080/solr/`,你...

    web.xml配置详细介绍(CHM)

    `web.xml`是Servlet容器(如Tomcat、Jetty等)启动时读取的配置文件,用于指导服务器如何处理Web应用中的请求和资源。通过这个文件,你可以设置初始化参数、映射Servlet、配置过滤器、声明安全约束等。 2. **基本...

    apache-tomcat-8.5.32-windows-x64安装版

    - 在`conf/server.xml`中设置`&lt;Context&gt;`元素的`security-constraint`,以实现URL级别的权限控制。 8. **日志与错误处理**: - Tomcat的日志文件位于`logs`目录下,包括`catalina.out`、`host-manager`、`manager...

    jsp web.xml文件的作用及基本配置.docx

    - 对于 Tomcat 服务器而言,如果没有配置 `web.xml` 或者没有配置欢迎页,访问应用根目录时可能会出现默认页面或者错误提示。 - 但在大多数情况下,为了更好地管理和组织应用,建议保留并适当配置 `web.xml`。 ####...

    基于Tomcat的安全验证机制

    2. **定义受保护的资源**:使用`&lt;security-constraint&gt;`元素定义哪些URL或资源需要认证才能访问。 3. **配置认证和授权**:使用`&lt;login-config&gt;`元素定义认证方法,然后使用`&lt;security-role-ref&gt;`元素将角色映射到...

Global site tag (gtag.js) - Google Analytics