Eri*_*ric 16 java security jboss password-protection jboss7.x
在JBoss AS 5中,我在*-ds.xml中定义了一个数据源,但是将用户名/加密密码放在*-jboss-beans.xml中.
现在在JBoss AS 7.1中,数据源在standalone.xml或domain.xml中定义.我在哪里将加密密码放在AS 7.1中?
换句话说,如何在AS 7中加密和保护明确的密码?
Coo*_*ans 36
在AS7中,您可以使用SecureIdentityLoginModule添加加密的密码域.例如,您可以在standalone.xml或domain.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>
Run Code Online (Sandbox Code Playgroud)
然后,您可以在特定数据源中添加此安全域,该数据源在standalone.xml或domain.xml中使用此userid/pwd组合:
<datasource ... >
.....
<security>
<security-domain>EncryptedPassword</security-domain>
</security>
</datasource>
Run Code Online (Sandbox Code Playgroud)
要加密密码本身,您可以运行此命令(请在您的特定AS7下载中验证picketbox 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
Run Code Online (Sandbox Code Playgroud)
这将返回您可以在安全域中使用的加密密码.
您可以在此处阅读有关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>
Run Code Online (Sandbox Code Playgroud)