- 浏览: 21812 次
- 性别:
- 来自: 广州
最近访客 更多访客>>
最新评论
-
guoyanxi:
感谢,正准备考
IBM AIX认证资料(含000-103&000-104题库) -
nrxqq:
不是很懂
Swing中的线程探究-1
概述
Servlet技术规范规定了两种由容器实现的Web应用程序的安全模型,分别是:
1)声明性安全模型:指可以在部署的时候由部署者为Web应用的资源配置安全限制,比如我们可以将用户放到特定权限的组里和为特定的资源配置身份认证等,这些工作都可以在web.xml中配置完成。
2)程序性安全模型:指由程序员在代码中使用特定的方法来限制某些资源的访问,但是注意的是如果安全规则发生了变化,就必须重新修改代码并编译,比较麻烦,所以使用的不多。
由一个例子说开
虽然在前面的《SCWCD之路——Web应用的结构和部署》 一文中已经讲述过如何在web.xml中配置各种安全描述符,但是零散,下面给出一个比较具体的例子:考虑有一个admin.jsp的页面,这个页面必须有一定权限才可以访问,假设访问的用户角色必须是administrator,并且这个角色组中有一个用户名就是administrator。
1)编写访问受限的页面admin.jsp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Admin Page</title> </head> <body> <h1>Hello, Administrator</h1> </body> </html>
2)配置web.xml,限制admin.jsp页面的受访问(节选)
<web-app> <security-constraint> <display-name>Test</display-name> <web-resource-collection> <web-resource-name>AdminPage</web-resource-name> <description/> <url-pattern>/admin.jsp</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>administrator</role-name> </auth-constraint> </security-constraint> <login-config> <!--这里采用基本的登录配置--> <auth-method>BASIC</auth-method> <realm-name>Welcome to administrator page</realm-name> </login-config> </web-app>
3)配置角色及属于该角色的用户(角色是administrator,用户名是administrator),这里以Tomcat为例子,修改Tomcat的tomcat-user.xml文件,在其中添加如下内容
<tomcat-users> <!--定义角色--> <role rolename="administrator" /> <!--定义用户--> <user name="administrator" password="123" roles="administrator" /> </tomcat-users>
4)这个时候在浏览器的地址栏里输入admin.jsp的地址,将会出现验证的对话框,如下图
5)在对话框中输入用户名administrator和密码123即可看到admin.jsp页面。(修改tomcat-user.xml后可能需要重启Tomcat)
6)在上面的操作中是直接修改Tomcat下的tomcat-user.xml文件的,这样可能会给其他的用户造成不便,不是好办法。可以在该项目的WEB-INF文件夹下新建一个用户文件(如web-user.xml),然后在该文件中加入如下内容:
<tomcat-users> <!--定义角色--> <role rolename="administrator" /> <!--定义用户--> <user name="administrator" password="123" roles="administrator" /> </tomcat-users>
这个时候还需要告诉Tomcat在项目启动的时候加载这个文件,到该项目的META-INF文件夹下修改context.xml文件如下:
<Context antiJARLocking="true" path="/WebTest"> <!--注意pathname必须正确,否则可能报告找不到该文件--> <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="webapps/WebTest/WEB-INF/web-user.xml" /> </Context>
之后再在浏览器里输入admin.jsp页面的地址,照样会看到验证的对话框。
7)在上面的步骤中,密码都是采用明文的形式保存的,这可能会给程序留下安全隐患。所以有的时候需要对这些密码进行加密处理。使用Tomcat 6.0中提供的库文件catalina.jar(位于Tomcat安装目录的lib目录下)即可方便地获取字符串的MD5值,所以这里使用MD5来对密码进行处理。(使用catalina.jar还需要另一个库文件tomcat-juli.jar的支持,位于Tomcat安装目录的bin目录下,附件中有这两个文件),使用如下命令获取123的MD5值,如:
可以得知123的MD5值是202cb962ac59075b964b07152d234b70,可以用这个来代替原来的明文密码,修改web-user.xml文件的内容为
<tomcat-users> <!--定义角色--> <role rolename="administrator" /> <!--定义用户--> <user name="administrator" roles="administrator" password="202cb962ac59075b964b07152d234b70" /> </tomcat-users>
并且修改context.xml的内容为
<Context antiJARLocking="true" path="/WebTest"> <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="webapps/WebTest/WEB-INF/web-user.xml" digest="MD5" /> </Context>
之后再在浏览器里输入admin.jsp页面的地址,照样会看到验证的对话框,至此,全部工作完成。
安全配置中的登录配置
在上面的例子中使用了基本的登录配置,其实验证方法一共有四种,这里来系统地讲述下。
1)BASIC验证:该验证方法比较简单且使用较为广泛,形式是当你要访问某受限资源时会弹出一个对话框要求你输入用户名和密码,在这里用户名采用明文方式发送,而密码则采用Base64编码发送,安全性较低。
2)DIGEST验证:该验证方法与BASIC基本一致,不同的是它预先在服务器端存放了用户名和密码的MD5值,在网络上传输的也是MD5值,传到服务器后才与服务器进行对比,所以安全性较高。
3)FORM验证:该验证方法由程序员来指定一个登录的表单页面,当用户需要访问受限资源时则出现提示用户输入用户名和密码,包括一个出错页面,安全性也比较低,但是在考试的时候出现比较多。下面给出一个例子,如:
编写包含Form的页面auth.jsp(节选)
<form action="j_security_check" method="post"> userName:<input type="text" name="j_username" /><br /> password:<input type="text" name="j_password" /><br /> <input type="submit" value="authenticate"> </form>
上面的代码中需要注意的是action必须为j_security_check,用户框名是j_username,密码框名是j_password
然后修改web.xml,添加如下内容
<web-app> <login-config> <auth-method>FORM</auth-method> <realm-name>Welcome to administrator page</realm-name> <form-login-config> <form-login-page>/auth.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <web-app>
4)CLIENT-CERT验证:该验证方法需要和SSL及数字证书来一起使用,考试时不怎么出现,这里给个思路:可以使用JDK提供的keytool工具来生成自己的密钥文件,再根据密钥文件输出数字证书,然后使用浏览器(如IE)导入数字证书,之后再去Tomcat中开启https协议(默认是注释掉的,内容如下)
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
重启Tomcat后,如果证书成功,则会出现如下提示:
如果浏览器没有导入证书,则会出现如下提示:
总结
安全配置在考试中同样占有一定的分量,但是平常的资料却很少提及,希望这篇文章能给予大家一些帮助。
发表评论
-
SCWCD之路——结束语
2010-01-12 19:46 1192写到这里,整个专题终于告一段落了。总的来说,S ... -
SCWCD之路——附加内容
2010-01-12 19:32 862介绍 ... -
SCWCD之路——表达式语言
2010-01-12 18:55 976介绍 EL(Expressio ... -
SCWCD之路——标准标签库开发
2010-01-11 20:58 829介绍 JSTL(JSP ... -
SCWCD之路——自定义标签库开发
2010-01-11 16:45 880介绍 ... -
SCWCD之路——J2EE设计模式
2010-01-11 15:15 1350概述 J2EE目前的设计模式有 ... -
SCWCD之路——Web应用的结构和部署
2010-01-10 14:33 1195概述 在Web应用中,有着其一 ... -
SCWCD之路——JSP技术
2010-01-09 12:05 1133JSP介绍 ... -
SCWCD之路——Servlet技术
2010-01-08 20:48 1157Servlet技术介绍 Ser ... -
SCWCD之路——前言
2010-01-07 20:43 960SCWCD(Sun Certified Web ...
相关推荐
NULL 博文链接:https://superzhouych.iteye.com/blog/565269
NULL 博文链接:https://superzhouych.iteye.com/blog/568669
NULL 博文链接:https://superzhouych.iteye.com/blog/567784
java web servlet scwcd
Java认证考试.SCWCD是一个关于java方面的web开发的证书考试。主要讲述servlet技术
scwcd认证题库 scwcd认证题库 scwcd认证题库 scwcd认证题库 scwcd认证题库
SCWCD Exam Study Kit Java Web Component Develop及笔记
书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的Web应用实例,并提供了详细的开发和部署步骤。由于Java Web技术是SUN公司在Java Servlet规范中提出的通用技术,因此本书讲解的Java Web应用例子可以...
《Tomcat与Java Web开发技术详解》语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,《Tomcat与Java Web开发技术详解》都是精通Tomcat和开发Java Web应用的必备的实用手册。《Tomcat与Java Web开发...
书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的Web应用实例,并提供了详细的开发和部署步骤。由于Java Web技术是SUN公司在Java Servlet规范中提出的通用技术,因此本书讲解的Java Web应用例子可以...
书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的web应用实例,并提供了详细的开发和部署步骤。由于java web技术是sun公司在java servlet规范中提出的通用技术,因此本书讲解的java web应用例子...
SCWCD(Sun Certified Web Component Developer) Exam Study Kit
Sun Certified Web Component Developer for J2EE 5 代号:310-083 该文档题量:239 主要看前100题,我考了两次,出的题都是在100以内。 我考式时出的题全是这套题上的,没有一个没在这套题上。包括一个原版题和一个...
《Tomcat与Java Web开发技术详解》还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材,也可作为SUN公司的SCWCD(SUN Certified Web Component Developer)认证的辅导教材。
书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的web应用实例,并提供了详细的开发和部署步骤。由于java web技术是sun公司在java servlet规范中提出的通用技术,因此本书讲解的java web应用例子...