2012-05-09 183 views
12

在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中對密碼進行加密和保護?

回答

27

在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進行加密。

+0

也看到shatk答案,managedConnectionFactoreName模塊選項需要提供。 –

5

下面是完整的安全域配置對於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> 
+0

實際上可以爲多個數據源擁有相同的安全模塊嗎?我一直在閱讀jboss文檔,他們只提到一個數據源:jboss.jca:service = {type},name = {jndiName}。我看到你指定了name = dataSource-1-PoolName,dataSource-2-PoolName –

2

在環境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

1

創建罐子簡單的項目( 的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 ...

2

對於誰有興趣在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 

希望這有助於 利瑪竇