当前位置:   article > 正文

web.xml中security-constraint安全认证标签说明

security-constraint

在做web项目时由于想给webRoot下的jsp文件进行安全保护,控制不允许直接对jsp的访问,于是找到了tomcat的安全认证机制,只需要在web.xml中进行一定的配置即可,非常方便。

1.因为使用了SpringMVC,这里先给出SpringMVC配置文件中的视图解析器配置

  1. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  2. <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
  3. <!--<property name="prefix" value="/WEB-INF/jsp/" />-->
  4. <property name="prefix" value="/views" />
  5. <property name="suffix" value=".jsp" />
  6. <!-- InternalResourceViewResolver需要最低的优先级(最大order值) -->
  7. <property name="order" value="2" />
  8. </bean>


2.然后去配置security-constraint,因为tomcat安全认证有四种类型,我这里使用了BASIC

  1. <security-constraint>
  2. <display-name>interceptor-jsp</display-name>
  3. <web-resource-collection>
  4. <web-resource-name>JSPs</web-resource-name>
  5. <url-pattern>/views/resource/*</url-pattern><!-- 拒绝直接访问web文件夹下的所有页面 -->
  6. </web-resource-collection>
  7. <auth-constraint/>
  8. </security-constraint>
  9. <!-- 四种认证类型 -->
  10. <!-- BASIC:HTTP规范,Base64 -->
  11. <login-config>
  12. <auth-method>BASIC</auth-method>
  13. </login-config>

下面是四种类型的安全认证的介绍:

 

  1.   <!-- 四种认证类型 -->
  2.     <!-- BASIC:HTTP规范,Base64 这种方式被认为是最不安全的认证,因为它没有提供强烈的加密措施 -->
  3.     <login-config>
  4.         <auth-method>BASIC</auth-method>
  5.     </login-config>
  6.     <!-- DIGEST:HTTP规范,数据完整性强一些,但不是SSL 相比于BASIC认证,它是种比较安全的认证,它在认证时将请求数据 通过MD5的加密方式进行认证 -->
  7.     <login-config>
  8.         <auth-method>DIGEST</auth-method>
  9.     </login-config>
  10.     <!-- CLIENT-CERT:J2EE规范,数据完整性很强,公共钥匙(PKC) 这是一种基于客户端证书的认证方式,比较安全。但缺陷是在没有安全证书的客户端无法使用 -->
  11.     <login-config>
  12.         <auth-method>CLIENT-CERT</auth-method>
  13.     </login-config>
  14.     <!-- FORM:J2EE规范,数据完整性非常弱,没有加密,允许有定制的登录界面 这是种基础自定义表单的认证,你可以指定登录时的验证表单 -->
  15.     <login-config>
  16.         <auth-method>FORM</auth-method>
  17.         <form-login-config>
  18.             <form-login-page>/login.html</form-login-page>
  19.             <form-error-page>/error.jsp</form-error-page>
  20.         </form-login-config>
  21.     </login-config>

3.主要的目录结构


对resource文件夹下的文件进行了安全保护,test.jsp通过后台Controller跳转,jsResource.jsp直接访问,结果如下

4.运行结果

详细解释:

1.security-constraint元素

部署描述符中的<security-constraint>元素允许不通过编程就可以限制对某个资源的访问。

  1. <security-constraint>
  2. <display-name>default</display-name>
  3. <web-resource-collection>
  4. <web-resource-name>all files</web-resource-name>
  5. <url-pattern>/*</url-pattern>
  6. </web-resource-collection>
  7. <auth-constraint>
  8. <role-name>admin</role-name>
  9. </auth-constraint>
  10. <user-data-constraint>
  11. <transport-guarantee>NONE</transport-guarantee>
  12. </user-data-constraint>
  13. </security-constraint>

 (1) web-resource-collection元素

    web-resource-collection元素标识需要限制访问的资源子集。在web-resource-collection元素中,可以定义URL模式和HTTP方法。如果不存在HTTP方法,就将安全约束应用于所有的方法。

        web-resource-name是与受保护资源相关联的名称。http-method元素可被赋予一个HTTP方法,比如GET和POST。

(2) auth-constraint元素

        auth-constraint元素用于指定可以访问该资源集合的用户角色。如果没有指定auth-constraint元素,就将安全约束应用于所有角色。

        role-name元素包含安全角色的名称。

(3) user-data-constraint元素

        user-data-constraint元素用来显示怎样保护在客户端和Web容器之间传递的数据。

        transport-guarantee元素必须具有如下的某个值:

        ● NONE,这意味着应用不需要传输保证。

        ● INTEGRAL,意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中不能改变。

        ● CONFIDENTIAL,这意味着传输的数据必须是加密的数据。

       在大多数情况下,安全套接字层(SSL)用于INTEGRAL或CONFIDENTIAL。

2.login-config元素

login-config元素用来指定所使用的验证方法、领域名和表单验证机制所需的特性。

<login-config>

    <auth-method>FORM</auth-method>

    <realm-name>appTest</realm-name>

    <form-login-config>

        <form-login-page>/login.jsp</form-login-page>

        <form-error-page>/login_failed.jsp</form-error-page>

    </form-login-config>

</login-config>

login-config子元素的描述如下:

● auth-method指定验证方法。它的值为下面的一个:BASIC、DIGEST、FORM或 CLIENT-CERT

● realm-name指定HTTP Basic验证中使用的领域名。

●form-login-config指定基于表单的登录中应该使用的登录页面和出错页面。如果没有使用基于表单的验证,则忽略这些元素。这个元素的定义如下,其中form-login-page用于指定显示登录页面的资源路径, form-error-page则用于指定用户登录失败时显示出错页面的资源路径。这两个页面路径都必须以a/开始,并与应用目录相对应。

3.security-role元素

security-role元素指定用于安全约束中的安全角色的声明。

<security-role>

    <description>admin</description>

    <role-name>admin</role-name>

</security-role>

  1. <security-constraint>
  2. <display-name>
  3. baseporject</display-name>
  4. <web-resource-collection>
  5. <web-resource-name>baseproject</web-resource-name>
  6. <url-pattern>*.jsp</url-pattern>
  7. <url-pattern>*.do</url-pattern>
  8. <http-method>GET</http-method>
  9. <http-method>PUT</http-method>
  10. <http-method>HEAD</http-method>
  11. <http-method>TRACE</http-method>
  12. <http-method>POST</http-method>
  13. <http-method>DELETE</http-method>
  14. <http-method>OPTIONS</http-method>
  15. </web-resource-collection>
  16. <auth-constraint>
  17. <description>
  18. baseproject</description>
  19. <role-name>All Role</role-name>
  20. </auth-constraint>
  21. <user-data-constraint>
  22. <transport-guarantee>NONE</transport-guarantee>
  23. </user-data-constraint>
  24. </security-constraint>
  25. <login-config>Xml代码
  26. <!--四种验证方式,附在最后有说明-->
  27. <auth-method>FORM</auth-method>
  28. <form-login-config>
  29. <form-login-page>/login.html</form-login-page>
  30. <form-error-page>/error.html</form-error-page>
  31. </form-login-config>
  32. </login-config>
  33. <security-role>
  34. <role-name>All Role</role-name>
  35. </security-role>

 自己项目采用:

  1. <security-constraint>
  2. <web-resource-collection>
  3. <web-resource-name>testxiangmu</web-resource-name>
  4. <url-pattern>/ssl/*</url-pattern>
  5. </web-resource-collection>
  6. <user-data-constraint>
  7. <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  8. </user-data-constraint>
  9. </security-constraint>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/955839
推荐阅读
相关标签
  

闽ICP备14008679号