2012-05-09 15 views
12

In JBoss AS 5 habe ich eine Datenquelle in * -ds.xml definiert, aber gebe Benutzername/verschlüsseltes Passwort in * -jboss-beans.xml ein.JBoss AS 7.1 - Datenquelle zum Verschlüsseln des Passworts

In JBoss AS 7.1 ist die Datenquelle nun in standalone.xml oder domain.xml definiert. Wo gebe ich das verschlüsselte Passwort in AS 7.1 ein?

Mit anderen Worten, wie ist ein klares Passwort in AS 7 verschlüsselt und gesichert?

Antwort

27

In AS7 können Sie mit SecureIdentityLoginModule eine verschlüsselte Kennwortdomäne hinzufügen. Zum Beispiel können Sie eine Sicherheitsdomäne in standalone.xml oder domain.xml definieren:

<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> 

Dann können Sie diese Sicherheitsdomäne in Ihrer speziellen Datenquelle hinzufügen, die diese Benutzer-ID/PWD Kombination in standalone.xml oder Domäne verwendet .xml:

<datasource ... > 
     ..... 
     <security> 
       <security-domain>EncryptedPassword</security-domain> 
     </security> 
    </datasource> 

So verschlüsseln das Passwort selbst, Sie diesen Befehl ausführen können (bitte die Versionen von picketbox jar und Protokollierung jar in Ihrem speziellen AS7 Download überprüfen entsprechend zu ersetzen):

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 

Dadurch wird ein verschlüsseltes Kennwort zurückgegeben, das Sie in Ihrer Sicherheitsdomäne verwenden können.

Sie können mehr über das JBoss AS7-Sicherheitssubsystem here lesen. Seit Open Source Felsen, können Sie sehen, wie der Codierungscode im Quellcode von SecureIdentityLogin funktioniert. Sie werden im Quellcode feststellen, dass Blowfish für die Verschlüsselung verwendet wird.

+0

auch die Antwort von shatk sehen, die managedConnectionFactoreName Modul-Option muss zur Verfügung gestellt werden. –

5

Unten finden Sie die komplette Sicherheitsdomänenkonfiguration für 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

Ist es tatsächlich möglich, das gleiche Sicherheitsmodul für mehrere Datenquellen zu haben? Ich habe die jboss-Dokumentation gelesen und erwähne nur eine Datenquelle: jboss.jca: service = {type}, name = {jndiName}. Ich sehe, dass Sie name = dataSource-1-PoolName, dataSource-2-PoolName angegeben haben –

2

In einer Umgebung, CentOS 6.3 Release, JBoss-EAP-6.0.0 dies nur mit Code = "SecureIdentity" gearbeitet, mit picketbox-4.0.9.Final-redhat-1.jar für die Passwortverschlüsselung.

<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" gibt "PB00024: Zugriff verweigert: Nicht authentifizierte Anrufer: null".

Quelle: https://docs.jboss.org/author/display/AS7/Security+subsystem+configuration

1

erstellen einfaches Projekt mit Gläsern ( jboss-Logging-3.1.4.GA-redhat-2.jar picketbox-4.1.1.Final-redhat-1.jar picketbox- commons-1.0.0.final-redhat- 3.jar picketbox-Infinispan-4.1.1.Final-redhat-1.jar) und benutzerdefinierte Klasse mit Eingang args laufen:

public class Test { 

    public static void main(String[] args) throws Exception { 
     new org.picketbox.datasource.security.SecureIdentityLoginModule() 
       .main(args); 

    } 

} 

Ausgang wird sein: codierte Passwort: 3d5bc094c128 ...

2

Für diejenigen, die daran interessiert sind, dass dies unter Windows läuft (und in meinem Fall auf 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 

hoffte, das hilft, Matteo

Verwandte Themen