`
从此醉
  • 浏览: 1046409 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

jboss与jaas的整合日记

 
阅读更多

开始的时候总是觉得jaas是个很神奇的东西,正好有本书上介绍这个相关的例子,于是按照书上的步骤坐下来似乎也不是那么的复杂,下面是关于jaas与jboss整合的步骤

(1)首先需要在jboss中配置实用RDBMS的方式来管理数据库中的用户和角色,其工作主要包括要在 \jboss-5.1.0.GA\server\default\conf\login-config.xml 中添加对安全管理的配置

 <application-policy name="htool">
    <authentication>           
        <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule" flag = "required">
            <module-option name = "dsJndiName">java:/firstds</module-option>
            <module-option name = "principalsQuery">SELECT password FROM users_table WHERE username = ?</module-option>
            <module-option name = "rolesQuery">select userroles from roles_table where username=?</module-option>   
            <module-option name="hashAlgorithm">MD5</module-option>              
            <module-option name="hashEncoding">base64</module-option>              
            <module-option name="hashEncoding">HEX</module-option>
            <module-option name="hashAlgorithm">SHA-1</module-option>              
            <module-option name="digestCallback">com.myclass.MyDigestCallback</module-option>         
    </login-module>        
    </authentication> 



(2)步骤一主要是在服务器中配置怎么样去控制,这一步骤中主要配置的就是什么角色可以访问该应用,或者是什么样的角色拥有什么样的权限,以及对登陆方式的设置,以下是相关的修改,主要是关于web.xml文件的修改

<!-- 为该应用声明安全性角色 -->
    <security-role>
        <role-name>crazyit</role-name>
    </security-role>

    <security-constraint>
        <!-- 定义受保护的Web资源集 -->
        <web-resource-collection>
            <!-- 定义Web资源集的名称 -->
            <web-resource-name>test</web-resource-name>
            <!-- 匹配该URL模式的资源都处于被保护状态下 -->
            <url-pattern>/*</url-pattern>
            <url-pattern>/html/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <!-- 访问受保护资源所需的角色 -->
            <role-name>crazyit</role-name>
        </auth-constraint>
    </security-constraint>


(3)在数据库中添加创建相关的表,以及插入相应的记录

create table users_table(
 userid int auto_increment primary key,
 username varchar(64) unique, 
 password VARCHAR(64)
);
create table roles_table
(
 roleid  int auto_increment primary key,
 username varchar(64),
 userRoles varchar(32)
);
# 插入一个用户
insert into users_table 
values(null, 'yeeku','123');
# 插入一个用户,以及它对应的角色
insert into roles_table 
values(null ,'yeeku','crazyit');

(4) 需要通知jboss那些安全域被使用

WEB-INF/jboss-web.xml 的内容如下

<!DOCTYPE jboss-web PUBLIC
 "-//JBoss//DTD Web Application 5.0//EN"
 "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
 <!-- 指定该Web应用使用哪个安全域 -->
 <security-domain>java:/jaas/htool</security-domain>
    <!--应用的路劲-->
 <context-root>WebHtool</context-root>
</jboss-web>

虽然过程看起来比较简单,但是在实际的过程中遇到了两个问题

(1)虽然login-module添加的是"org.jboss.security.auth.spi.DatabaseServerLoginModule" 但是在启动的过程中报了user.properities文件找不到的问题

这个问题主要是取roles的sql写的有问题DatabaseServerLoginModule 的特性可以参考https://community.jboss.org/wiki/DatabaseServerLoginModule




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics