在做web项目时由于想给webRoot下的jsp文件进行安全保护,控制不允许直接对jsp的访问,于是找到了tomcat的安全认证机制,只需要在web.xml中进行一定的配置即可,非常方便。
1.因为使用了SpringMVC,这里先给出SpringMVC配置文件中的视图解析器配置
2.然后去配置security-constraint,因为tomcat安全认证有四种类型,我这里使用了BASIC
interceptor-jsp
JSPs
/views/resource/*
BASIC
下面是四种类型的安全认证的介绍:
BASIC
DIGEST
CLIENT-CERT
FORM
/login.html
/error.jsp
3.主要的目录结构
对resource文件夹下的文件进行了安全保护,test.jsp通过后台Controller跳转,jsResource.jsp直接访问,结果如下
4.运行结果
详细解释:
1.security-constraint元素
部署描述符中的
default
all files
/*
admin
NONE
(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指定验证方法。它的值为下面的一个:BASIC、DIGEST、FORM或 CLIENT-CERT
● realm-name指定HTTP Basic验证中使用的领域名。
●form-login-config指定基于表单的登录中应该使用的登录页面和出错页面。如果没有使用基于表单的验证,则忽略这些元素。这个元素的定义如下,其中form-login-page用于指定显示登录页面的资源路径, form-error-page则用于指定用户登录失败时显示出错页面的资源路径。这两个页面路径都必须以a/开始,并与应用目录相对应。
3.security-role元素
security-role元素指定用于安全约束中的安全角色的声明。
baseporject
baseproject
*.jsp
*.do
GET
PUT
HEAD
TRACE
POST
DELETE
OPTIONS
baseproject
All Role
NONE
Xml代码
FORM
/login.html
/error.html
All Role
自己项目采用:
testxiangmu
/ssl/*
CONFIDENTIAL