当使用BASIC和FORM认证方式时,用户密码以明文的形式作为HTTP请求的一部分发送。正如在上一部分描述的,我们可以使用HTTPS来加密整个会话过程, 从而能够确保密码在传输过程中的私密性. 但是,这种方式仍然需要密码以明文的形式存在服务器上, 至少当密码从存储加载到内存时,密码会暂时性的以明文形式存在。.
Digest 认证方式采用挑战-应答机制,在这种机制里,服务器发送一个唯一的挑战给客户,客户通过发送hashed值作为响应,服务器将接收到的Hash值和自身的Hash值进行比较来实现认证。在整个过程中,客户并没有将实际的密码文本发送到服务器。
在Web应用中,digest认证方式的使用需要设置将web.xml描述文件中的 auth-method 设置为 DIGEST. 下面给出了一个可能的例子,但是省略了应用特定的specific security-constraint 和 security-role 声明.
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>My Aplication</realm-name>
</login-config>
为了digest完成配置, 还需要创建一个特定的digest友好的安全域,并把它连接到应用. 例如, 我们将创建一个名为java:/jaas/digest的安全域. 应用通过 jboss-web.xml 文件连接到安全域.
<jboss-web>
<security-domain>java:/jaas/digest</security-domain>
</jboss-web>
现在还需要创建安全域的定义. 在这个例子里,我们将使用UsersRolesLoginModule , 当然也可以使用其它支持password hash登录模块. 下面给出一个完整配置的例子.
<application-policy name="digest"><o:p></o:p>
<authentication><o:p></o:p>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"<o:p></o:p>
flag="required"><o:p></o:p>
<module-option name="usersProperties">digest-users.properties</module-option><o:p></o:p>
<module-option name="rolesProperties">digest-roles.properties</module-option><o:p></o:p>
<module-option name="hashAlgorithm">MD5</module-option><o:p></o:p>
<module-option name="hashEncoding">rfc2617</module-option><o:p></o:p>
<module-option name="hashUserPassword">false</module-option><o:p></o:p>
<module-option name="hashStorePassword">true</module-option><o:p></o:p>
<module-option name="passwordIsA1Hash">true</module-option><o:p></o:p>
<module-option name="storeDigestCallback"><o:p></o:p>
org.jboss.security.auth.spi.RFC2617Digest<o:p></o:p>
</module-option><o:p></o:p>
</login-module><o:p></o:p>
</authentication><o:p></o:p>
</application-policy><o:p></o:p>
最前面的两个模块选项设置了user 和 roles 属性文件的位置. 与剩下的其他六个选项一起构成了digest认证的完整配置. 为了在web应用中启用digest认证,需要将剩下的 6 个选项拷贝到web应用的登录模块配置中。.
到了这里,剩下的工作就是创建password hashes,并把它保存到你的存储中;在这个例子里,存储就是digest-users.properties 文件. Digest hashes是 username, password, 和 realm 名称一起的hash. realm名称来自 web.xml 文件中的realm名称. 在这个例子realm名称是 My Application.
JBoss提供了一个辅助类来创建 digest hashes. 它可以在bin目录通过如下的命令使用:
[bin]$ java -cp ../server/default/lib/jbosssx.jar \org.jboss.security.auth.spi.RFC2617Digest username "My Application" passwordRFC2617 A1 hash: 9b47ec6f03603dd49863e7d58c4c49ea
三个参数是 username, realm 名称和 password. digested 密码应该保存到用户管理的存储中。在这里,应该保存到 digest-users.properties 文件中.
user=9b47ec6f03603dd49863e7d58c4c49ea
为了完成整个安全配置,你可能还需要定义应用的角色,并把它配置到登录模块中。但是这些与digest认证没有关系。.
分享到:
相关推荐
JBoss是纯Java的Web应用服务器,为了保证JBoss服务器的正常运行,在安装JBoss之前首先要确保系统 已经安装了JDK。可以从http://labs.jboss.com/jbossas/downloads/ 下载最新JBoss应用服务器,本章选用JBoss 4.2.2.GA...
配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss...
jboss是专门用于web开发的一种应用服务器,是常用的。
IDE 1.4.0 3 基于JBoss 4.x的JSF应用开发 4 基于JBoss 4.x的JMS应用开发 5 基于JBoss 4.x的Hibernate应用开发 6 基于JBoss 4.x的JTA应用开发 7 基于JBoss 4.x的JavaMail应用开发 8 基于JBoss 4.x...
JBOSS使用手册 JBOSS使用手册 JBOSS使用手册
JBOSS.SEAM.WEB应用开发 中文版 (美)MichaelYuan.
JBOSS开发人员指南 JBOSS开发人员指南 JBOSS开发人员指南 JBOSS开发人员指南
WEB服务器与应用服务器的区别 1.WEB服务器: 理解WEB服务器,首先你要理解什么是WEB?WEB你可以简单理解为你所看到的HTML页面就是 WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如IIS、apache。 WEB服务器...
jboss4 开发指南,指引大家了解jboss并逐渐熟悉jboss的强大之处
JBOSS使用手册
JBoss Web Server User's Guide A high performance deployment platform Java EE, PHP and CGI applications
其中,需要开发者注意的是,本书不是介绍J2EE和如何应用J2EE的,而是关注JBoss服务器架构的内部细节及具体J2EE容器实现的配置和扩展。通过阅读本书,JBoss开发者可以深入理解标准组件的架构、集成,以及扩 资源太大...
为此,IDC对六家使用JBoss的大型美国公司进行访问,这些公司使用JBoss开发定制应用程序,并且至少已经运行这些应用程序十二个月时间。平均而言,通过传统的专有应用程序服务器转向JBoss Enterprise Application ...
配置Eclipse开发环境,服务器使用Jboss,通过Jboss开发Java Web程序。
mac linux 用 JBoss Restful 搭建Restful web service demo
精通JBoss——EJB与Web Services开发精解
jboss服务器,javaee容器,分布式
李刚,从事10年的Java EE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。现任新东方广州中心...
jbossesb开发手册,适合初学者学习使用
jboss portal 开发手册 e文版