运行环境:JBoss EAP 5.1.2 + Oracle Database XE 11gR2
默认情况下,配置数据源的口令是明文的,这很不安全。
本文介绍如何在JBoss EAP 5.1.2 中加密数据源口令,之所以使用 EAP 5.1.2,是因为客户使用的是这个版本。
1. 启动JBoss EAP 5.1.2
cd jboss-eap-5.1/jboss-as/bin, 运行./run.sh。
注意,JBoss EAP 5.1.2 需要运行在 JDK6 环境中,因此需要先安装和设置好JDK 6。
2. 进入控制台:http://localhost:8080/admin-console/
管理员账户/口令:admin/admin
如果无法登录,编辑 jboss-eap-5.1/jboss-as/server/default/conf/props/jmx-console-users.properties,去掉#admin=admin这一行前面的#。
3. 配置未加密口令的Oracle 数据源
(1)在 jboss-eap-5.1/jboss-as/server/default/deploy 目录下创建oracle-ds.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>OracleDSDemo</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.0.104:1521:XE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>demo</user-name>
<password>demo</password>
<metadata>
<type-mapping>Oracle11g</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
(2)复制 ojdbc6.jar 到 jboss-eap-5.1/jboss-as/common/lib 目录下。
(3)重启 JBoss EAP 5.1.2,访问DataSource,选择OracleDSDemo,点击Test Connection,确认连接成功。
如果连接不成功,在启动的console中会报告类似如下的错误信息:
Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
4. 配置加密口令的Oracle 数据源
在上一步做成功的基础上,才可以做这一步。
(1)生成口令的密文:
java -cp /Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-jmx.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-common.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-jca.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jbosssx.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-logging-spi.jar org.jboss.resource.security.SecureIdentityLoginModule demo
我这里的明文口令是demo,输出如下:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Encoded password: 68e0c86af11171b6
同一个明文口令,多次运行的结果是一样的,感觉这个加密算法并不十分安全,至少应该加点“盐”啊。
(2)修改 jboss-eap-5.1/jboss-as/server/default/conf/login-config.xml 文件,增加如下内容:
<application-policy name="EncryptDBPassword"> // 这里的name应该是你在配置数据源时写的security-domain里的字符串
<authentication>
<login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username">demo</module-option> // 数据库用户名
<module-option name="password">68e0c86af11171b6</module-option> //加密后的数据库口令
<module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDSDemo</module-option> // name等于数据源的jndi-name
</login-module>
</authentication>
</application-policy>
(3)修改 jboss-eap-5.1/jboss-as/server/default/deploy/oracle-ds.xml
去掉原有的数据库账户和口令的两行,替换为 <security-domain> EncryptDBPassword</security-domain> ,修改后的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>OracleDSDemo</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.0.104:1521:XE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<security-domain> EncryptDBPassword</security-domain>
<metadata>
<type-mapping>Oracle11g</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
(4)重启 JBoss EAP 5.1.2,访问DataSource,选择OracleDSDemo,点击Test Connection,确认连接成功。
如果连接不成功,在启动的console中会报告类似如下的错误信息:
Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
参考文献:
1. http://andrey.mikhalchuk.com/2013/05/10/default-login-and-password-for-jboss-eap-5-1-2.html
2. http://spiritfrog.iteye.com/blog/587877
3. http://minstrel.iteye.com/blog/1547168
4. http://www.coderanch.com/t/549915/JBoss/JBoss-Oracle-Configuration-DataSource
5. http://caohongxing7604.blog.163.com/blog/static/3201697420083531436433/
6. http://blog.csdn.net/w709854369/article/details/7642503
默认情况下,配置数据源的口令是明文的,这很不安全。
本文介绍如何在JBoss EAP 5.1.2 中加密数据源口令,之所以使用 EAP 5.1.2,是因为客户使用的是这个版本。
1. 启动JBoss EAP 5.1.2
cd jboss-eap-5.1/jboss-as/bin, 运行./run.sh。
注意,JBoss EAP 5.1.2 需要运行在 JDK6 环境中,因此需要先安装和设置好JDK 6。
2. 进入控制台:http://localhost:8080/admin-console/
管理员账户/口令:admin/admin
如果无法登录,编辑 jboss-eap-5.1/jboss-as/server/default/conf/props/jmx-console-users.properties,去掉#admin=admin这一行前面的#。
3. 配置未加密口令的Oracle 数据源
(1)在 jboss-eap-5.1/jboss-as/server/default/deploy 目录下创建oracle-ds.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>OracleDSDemo</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.0.104:1521:XE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>demo</user-name>
<password>demo</password>
<metadata>
<type-mapping>Oracle11g</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
(2)复制 ojdbc6.jar 到 jboss-eap-5.1/jboss-as/common/lib 目录下。
(3)重启 JBoss EAP 5.1.2,访问DataSource,选择OracleDSDemo,点击Test Connection,确认连接成功。
如果连接不成功,在启动的console中会报告类似如下的错误信息:
Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
4. 配置加密口令的Oracle 数据源
在上一步做成功的基础上,才可以做这一步。
(1)生成口令的密文:
java -cp /Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-jmx.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-common.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-jca.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jbosssx.jar:/Users/maping/Redhat/Eap/jboss-eap-5.1/jboss-as/lib/jboss-logging-spi.jar org.jboss.resource.security.SecureIdentityLoginModule demo
我这里的明文口令是demo,输出如下:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Encoded password: 68e0c86af11171b6
同一个明文口令,多次运行的结果是一样的,感觉这个加密算法并不十分安全,至少应该加点“盐”啊。
(2)修改 jboss-eap-5.1/jboss-as/server/default/conf/login-config.xml 文件,增加如下内容:
<application-policy name="EncryptDBPassword"> // 这里的name应该是你在配置数据源时写的security-domain里的字符串
<authentication>
<login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username">demo</module-option> // 数据库用户名
<module-option name="password">68e0c86af11171b6</module-option> //加密后的数据库口令
<module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDSDemo</module-option> // name等于数据源的jndi-name
</login-module>
</authentication>
</application-policy>
(3)修改 jboss-eap-5.1/jboss-as/server/default/deploy/oracle-ds.xml
去掉原有的数据库账户和口令的两行,替换为 <security-domain> EncryptDBPassword</security-domain> ,修改后的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>OracleDSDemo</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.0.104:1521:XE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<security-domain> EncryptDBPassword</security-domain>
<metadata>
<type-mapping>Oracle11g</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
(4)重启 JBoss EAP 5.1.2,访问DataSource,选择OracleDSDemo,点击Test Connection,确认连接成功。
如果连接不成功,在启动的console中会报告类似如下的错误信息:
Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
参考文献:
1. http://andrey.mikhalchuk.com/2013/05/10/default-login-and-password-for-jboss-eap-5-1-2.html
2. http://spiritfrog.iteye.com/blog/587877
3. http://minstrel.iteye.com/blog/1547168
4. http://www.coderanch.com/t/549915/JBoss/JBoss-Oracle-Configuration-DataSource
5. http://caohongxing7604.blog.163.com/blog/static/3201697420083531436433/
6. http://blog.csdn.net/w709854369/article/details/7642503
没有评论:
发表评论