JBoss与JAAS的整合日记

企鹅博客
企鹅博客
企鹅博客
30163
文章
0
评论
2020年9月13日23:09:35 评论 10 views 2677字阅读8分55秒

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

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

 

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

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

 

  1. <!-- 为该应用声明安全性角色 -->  
  2.     <security-role>  
  3.         <role-name>crazyit</role-name>  
  4.     </security-role>  
  5.   
  6.     <security-constraint>  
  7.         <!-- 定义受保护的Web资源集 -->  
  8.         <web-resource-collection>  
  9.             <!-- 定义Web资源集的名称 -->  
  10.             <web-resource-name>test</web-resource-name>  
  11.             <!-- 匹配该URL模式的资源都处于被保护状态下 -->  
  12.             <url-pattern>/*</url-pattern>  
  13.             <url-pattern>/html/*</url-pattern>  
  14.         </web-resource-collection>  
  15.         <auth-constraint>  
  16.             <!-- 访问受保护资源所需的角色 -->  
  17.             <role-name>crazyit</role-name>  
  18.         </auth-constraint>  
  19.     </security-constraint>  

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

 

  1. create table users_table(  
  2.  userid int auto_increment primary key,  
  3.  username varchar(64) unique,   
  4.  password VARCHAR(64)  
  5. );  
  6. create table roles_table  
  7. (  
  8.  roleid  int auto_increment primary key,  
  9.  username varchar(64),  
  10.  userRoles varchar(32)  
  11. );  
  12. # 插入一个用户  
  13. insert into users_table   
  14. values(null'yeeku','123');  
  15. # 插入一个用户,以及它对应的角色  
  16. insert into roles_table   
  17. values(null ,'yeeku','crazyit');  

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

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

 

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

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

继续阅读
weinxin
欢迎加入中国站长博客之家
本站的所有资源都会上传分享到博客之家,希望大家互相学习交流进步。
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: