在JBoss AS 5中,我在* -ds.xml中定義了一個數據源,但在* -jboss-beans.xml中放置了用戶名/加密密碼。JBoss AS 7.1 - 數據源如何加密密碼
現在在JBoss AS 7.1中,數據源在standalone.xml或domain.xml中定義。 我在哪裏把加密的密碼放入AS 7.1?
換句話說,如何在AS 7中對密碼進行加密和保護?
在JBoss AS 5中,我在* -ds.xml中定義了一個數據源,但在* -jboss-beans.xml中放置了用戶名/加密密碼。JBoss AS 7.1 - 數據源如何加密密碼
現在在JBoss AS 7.1中,數據源在standalone.xml或domain.xml中定義。 我在哪裏把加密的密碼放入AS 7.1?
換句話說,如何在AS 7中對密碼進行加密和保護?
在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>
然後,您可以在standalone.xml或域使用該用戶ID /密碼組合的特定數據源添加此安全域.XML:
<datasource ... >
.....
<security>
<security-domain>EncryptedPassword</security-domain>
</security>
</datasource>
要加密的口令本身,您可以運行此命令(請覈實picketbox罐子,罐子記錄的版本在您的特定AS7下載相應替代):
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安全子系統here。由於開放源代碼,您可以看到編碼代碼在源代碼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>
實際上可以爲多個數據源擁有相同的安全模塊嗎?我一直在閱讀jboss文檔,他們只提到一個數據源:jboss.jca:service = {type},name = {jndiName}。我看到你指定了name = dataSource-1-PoolName,dataSource-2-PoolName –
在環境CentOS版本6.3,JBoss的EAP-6.0.0這個只能用代碼= 「SecureIdentity」 工作, 使用picketbox-4.0.9.Final-redhat-1.jar用於密碼加密。
<security-domain name="some-ds-EncryptedPassword">
<authentication>
<login-module code="SecureIdentity" flag="required">
<module-option name="username" value="username"/>
<module-option name="password" value="encrypted_password"/>
</login-module>
</authentication>
</security-domain>
code =「SecureIdentityLogin」給出了「PB00024:拒絕訪問:未經身份驗證的調用方:null」。
來源:https://docs.jboss.org/author/display/AS7/Security+subsystem+configuration
創建罐子簡單的項目( 的jboss-測井3.1.4.GA-的redhat-2.jar picketbox-4.1.1.Final-的redhat-1.jar picketbox-公地1.0.0.final-紅帽-3.jar picketbox-的Infinispan-4.1.1.Final-紅帽-1.jar),並用輸入ARGS運行定製類:
public class Test {
public static void main(String[] args) throws Exception {
new org.picketbox.datasource.security.SecureIdentityLoginModule()
.main(args);
}
}
輸出將是:編碼密碼:3d5bc094c128 ...
對於誰有興趣在windows上運行(在我的情況下在JBoss EAP 6.4上...)
set JBOSS_HOME=C:\dev\jboss\jboss-eap-6.4
set MYPATH=%JBOSS_HOME%\modules\system\layers\base\org\picketbox\main\picketbox-4.1.1.Final-redhat-1.
jar;%JBOSS_HOME%\modules\system\layers\base\org\jboss\logging\main\jboss-logging-3.1.4.GA-redhat-2.jar;
java -classpath %MYPATH% org.picketbox.datasource.security.SecureIdentityLoginModule SecretPass
Encoded password: 13e0362237c93a9cda89f5b3da271521
希望這有助於 利瑪竇
也看到shatk答案,managedConnectionFactoreName模塊選項需要提供。 –