Jboss配置之数据源密码配置密文--EncryptingDataSourcePasswords

OS:linux centoS

Jdk:5

JbossAS:4.2.2GA

  • local-tx-datasource:

最常用的数据源配置,该连接池的连接管理器是LocalTxConnectionManager,只支持本地事务,不适合做分布式事务。

以mssql为例如下:

如果密码按明文配置应该是:

 

这种配置当然能完成数据源的配置,但是数据库的密码直接 暴露给了系统的操作员、维护人员,增加了数据库不安全的因素。

但是不用担心,jboss本身提供了对密码进行加密的工具org.jboss.resource.security.SecureIdentityLoginModule

操作方法:进入JBOSS_HOME 然后按classpath 执行这个加密工具就ok了

1、cd /usr/local/Jboss-4.2.2GA

2、java -cp lib/jboss-common.jar:lib/jboss-jmx.jar:server/default/lib/jbosssx.jar:server/default/lib/jboss-jca.jar org.jboss.resource.security.SecureIdentityLoginModule password
得出的加密串为一个16进制数据:5dfc52b51bd35553df8592078de921bc

到这里你可能问该怎么操作才能让jboss识别这个加密后的密码呢??

我们把local-tx-datasource中的用户名和密码两个节点干掉,加上一个安全域<security-domain>EncryptDBPassword</security-domain>

,这个域载有用户名、密码、数据源的JNDI。

配置后ms-ds.xml文件就变成了现在的样子:

然后在 修改JBOSS的安全登录配置文件JBOSS_HOME/server/default/conf/login-config.xml

加上一段如下配置

注意managedConnectionFactoryName的配置service一定是LocalTxCM否则JBOSS连接池类厂不能找到对应的连接管理器因为我们上面配置的数据源是本地数据源local-tx-datasource,这个对应关系要一致,否则jboss会报错。其他的对应关系不用我多说了应该都能看懂

,这样一个带有密文密码的数据源配置就OK了。

  • no-tx-datasource

非事务连接池配置,连接管理器:NoTxConnectionManager不支持事务

以oracle-ds.xml为例

配置好了应该是

同样在login-config中增加一段安全密码登陆的安全域

注意manegedConnectionFactoryName的service属性的变化,不再赘言。

然后重启JBOSS server ,debug之。。 没问题! 就这样平民级的jboss连接池配置大功告成了。

参考链接  http://www.jboss.org/community/wiki/EncryptingDataSourcePasswords

              http://www.jboss.org/community/wiki/IGetTheErrorSpecifiedInAConfiguredIdentityLoginModuleCouldNotBeFoundConnectionFactoryWillBeUnusable

 

有兴趣的同学可以一起深入探讨下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章