关于JBoss封装数据源访问的用户密码

来源:互联网 发布:mac地址上网ip 编辑:程序博客网 时间:2024/06/05 02:06

我使用的jboss-4.0.2,sql server2000 jdk1.507

在做密码封装之前先要确保你的数据库访问是成功的。使用jboss的配置数据源 和jsp或servlet访问没有问题。至于上述是怎么实现,请看者自己搞定。

首先,在mssql-ds.xml做修改如下:

 <local-tx-datasource>
    <jndi-name>MSSQLDS</jndi-name>
    <!--<use-java-context>false</use-java-context> -->
    <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testserver</connection-url>
    <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
    <min-pool-size>10</min-pool-size>
    <max-pool-size>30</max-pool-size>
    <blocking-timeout-mills>3000</blocking-timeout-mills>
    <idle-timeout-minutes>10</idle-timeout-minutes>
  
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
<!--<prepared-statement-cache-size></prepared-statement-cache-size>  -->
        <!-- sql to call on an existing pooled connection when it is obtained from pool
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
        -->

      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>MS SQLSERVER2000</type-mapping>
      </metadata>
      <security-domain>EncryptDBPassword</security-domain>//此处是做数据库登陆时所要使用到的安全域校验

  </local-tx-datasource>
</datasources>

在此xml中我们已经删除使用明文的数据库访问的用户名和密码。然后,在longin-config.xml中,我们要建一个跟EncryptDBPassword域相同的,安全登陆访问域的设置。

longin-config.xml
<application-policy name = "EncryptDBPassword">
       <authentication>
          <login-module code = "org.jboss.resource.security.SecureIdentityLoginModule"
             flag = "required">
               <module-option name = "username">sa</module-option>
               <module-option name = "password">-1b92045752737243207a6df87216de44</module-option>//这里是通过jboss自带的密码生成方式生成的密码文件,后面将介绍如何生成
               <module-option name = "managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=MSSQLDS</module-option>
         </login-module>
      </authentication>
    </application-policy> 

关于密码的生成,通过cmd访问到jboss的主目录下。使用下面一串代码可一生成密码文件://使用jboss提供的密码保护机制对数据库的用户密码进行封装

Microsoft Windows XP [版本 5.1.2600]
D:/>cd testserver/jboss-4.0.2/bin

D:/TestServer/jboss-4.0.2>java -cp "lib/jboss-jmx.jar;lib/jboss-common.jar;serve
r/default/lib/jboss-jca.jar;server/default/lib/jbosssx.jar" org.jboss.resource.s
ecurity.SecureIdentityLoginModule  ********(你的密码,最好确保你的密码至少是8位)[ENTER]
Encoded password: -1b92045752737243207a6df87216de44

至于如何生成和使用 base64 format的密码封装,我没有实验成攻,如果你有兴趣的话可以试试,第一次发这类东西有问题请讲,共同研究。谢谢 如何封装的英文我发在后面,有兴趣的话就研究一下,希望有人能完成 base64 format的封装。