原因
我们公司有一个管理系统,使用的人比较少,功能也比较简单。当初为了减少开发成本,使用了JBoss的JAAS功能来验证用户的身份。
配置
修改standalone.xml
要在JBoss7.1中使用JAAS,就需要修改$JBOSS_HOME\standalone\configuration\standalone.xml这个文件,相关的修改内容如下所示:
<security-domain name="MyRealm" cache-type="default">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/myds"/>
<module-option name="principalsQuery" value="select passwd from Users whereusername=?"/>
<module-option name="rolesQuery" value="select userRoles,'Roles' from UserRoleswhere username=?"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="base64"/>
</login-module>
</authentication>
</security-domain>
定义说明:
由于用户的用户名和密码放在了数据库,所以在上面的定义,我们使用了数据库认证(有关在JBoss7中定义数据源,可以参考以前的文章)。
为了提高安全性,数据库中的密码我们使用了不可逆的MD5加密。
修改jboss-web.xml
由于我们部署的应用程序是一个war,所以需要在jboss-web.xml应用上面所定义的security-domain,修改的内容如下所示:
<jboss-web>
<security-domain>java:/jaas/MyRealm</security-domain>
</jboss-web>
结语
完成了上面的配置后,然后再访问你的应用程序,如果出现登录框,就证明你的设置生效了。