Jboss 中的多 oracle 数据源密码加密

Mutli oralce Datasource Password Encryption in Jboss

我需要为 Jboss 配置加密密码。现在我在 oracle-ds.xml 中有直接的用户名密码。

https://docs.jboss.org/jbosssecurity/docs/6.0/security_guide/html/Encrypting_Data_Source_Passwords.html

完成上述Url后,我从oracle-ds.xml中删除了用户名和密码,并在login-config.xml中添加了一个新策略,并将该策略映射到oralce-ds.xml.

在单个 JNDI 名称的情况下工作正常。 (单一数据源)

在另一个应用程序中,我在 Oracle 中有 5 个数据源-ds.xml。

1) 我尝试在登录配置中添加不同的策略并在 oracle-ds.xml 中分别映射 - 但它不起作用

2) 我尝试在单一策略下添加登录模块,但失败了

有人可以帮我解决这个问题吗?

我没有在 Jboss 中明确地尝试过这个,但也许更简单的选择是不将密码(明文或加密)存储在您的配置文件中,而是存储在 Oracle 钱包中?

您可以创建一个钱包,将密码加密存储在那里,然后连接信息为:

<module-option name="username">/</module-option>
<module-option name="password"></module-option>

您配置钱包并设置如下:

mkstore -create -wrl c:\oracle\wallet
mkstore -wrl c:\oracle\wallet -createCredential MYDB scott tiger

其中用户 = scott,密码 = tiger,用于数据库 "MYDB",sqlnet.ora 指向钱包所在的位置:

SQLNET.WALLET_OVERRIDE=TRUE
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=c:\oracle\wallet)))

您可以在此处找到完整的示例:

https://connor-mcdonald.com/2015/09/21/connection-shortcuts-with-a-wallet/

如果由于应用程序 persistence.xml 中存储的名称,您只需要将 Oracle 连接映射到 N 个不同的 JNDI 名称,您可以使用别名的概念。

<mbean code="org.jboss.naming.NamingAlias" 
   name="jboss.jca:name=jdbc/myFirstDS,service=DataSourceBinding">
<attribute name="ToName">java:jdbc/mySecondDS</attribute>
<attribute name="FromName">java:jdbc/myFirstDS</attribute>
</mbean>