JBoss AS 7.1 - 数据源如何加密密码
2022-09-02 23:05:14
在 JBoss AS 5 中,我有一个用 *-ds 定义的数据源.xml但将用户名/加密密码放在 *-jboss-bean 中.xml。
现在,在 JBoss AS 7.1 中,数据源以独立.xml或域.xml定义。我应该将加密密码放在 AS 7.1 中的什么位置?
换句话说,如何在AS 7中加密和保护明码密码?
在 JBoss AS 5 中,我有一个用 *-ds 定义的数据源.xml但将用户名/加密密码放在 *-jboss-bean 中.xml。
现在,在 JBoss AS 7.1 中,数据源以独立.xml或域.xml定义。我应该将加密密码放在 AS 7.1 中的什么位置?
换句话说,如何在AS 7中加密和保护明码密码?
在 AS7 中,您可以使用 SecureIdentityLoginModule 添加加密的密码域。例如,您可以在独立域.xml或域中定义安全域.xml:
<security-domain name="EncryptedPassword">
<authentication>
<login-module code="SecureIdentity" flag="required">
<module-option name="username" value="test"/>
<module-option name="password" value="encrypted_password"/>
</login-module>
</authentication>
</security-domain>
然后,您可以在在独立.xml或域中使用此 userid/pwd 组合的特定数据源中添加此安全域.xml:
<datasource ... >
.....
<security>
<security-domain>EncryptedPassword</security-domain>
</security>
</datasource>
要加密密码本身,您可以运行以下命令(请验证特定AS7下载中的纠察盒jar和日志记录jar的版本以相应地替换):
java -cp $JBOSS_HOME/modules/org/picketbox/main/picketbox-4.0.6.<beta|final>.jar:$JBOSS_HOME/modules/org/jboss/logging/main/jboss-logging-3.1.0.<some_version>.jar:$CLASSPATH org.picketbox.datasource.security.SecureIdentityLoginModule password
这将返回可在安全域中使用的加密密码。
您可以在此处阅读有关 JBoss AS7 安全子系统的更多信息。由于开源是摇滚乐,您可以在SecureIdentityLogin的源代码中看到编码代码的工作原理。您会在源代码中注意到它用于加密。Blowfish
以下是 Jboss AS-7 的完整安全域配置:
<security-domains>
<!-- Security Setting's -->
<security-domain name="encryptedSecurity" cache-type="default">
<authentication>
<login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username" value="user_name"/>
<module-option name="password" value="encrypted_password"/>
<module-option name="managedConnectionFactoryName" value="jboss.jca:service=LocalTxCM,name=dataSource-1-PoolName,dataSource-2-PoolName"/>
</login-module>
</authentication>
</security-domain>