2012-05-09 3 views
12

In JBoss AS 5, ho un'origine dati definita in * -ds.xml ma ho inserito nome utente/password crittografata in * -jboss-beans.xml.JBoss AS 7.1 - datasource come crittografare la password

Ora in JBoss AS 7.1, l'origine dati è definita in standalone.xml o domain.xml. Dove inserisco la password crittografata in AS 7.1?

In altre parole, come viene crittografata e protetta una password in AS 7?

risposta

27

In AS7 è possibile utilizzare SecureIdentityLoginModule per aggiungere un dominio password crittografato. Per esempio, è possibile definire un dominio di sicurezza in standalone.xml o 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> 

quindi è possibile aggiungere questo dominio sicurezza per i suoi particolare fonte di dati che utilizza questa userid/combinazione pwd in standalone.xml o un dominio .xml:

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

per crittografare la password stessa, è possibile eseguire questo comando (si prega di verificare le versioni di vaso e vaso picketbox registrazione nel vostro particolare AS7 scaricare sostituire di conseguenza):

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 

Ciò restituirà una password crittografata che è possibile utilizzare nel dominio di sicurezza.

Ulteriori informazioni sul sottosistema di sicurezza JBoss AS7 here. Dal all'open source, è possibile vedere come funziona il codice di codifica nel codice sorgente di SecureIdentityLogin. Si noterà nel codice sorgente che utilizza Blowfish per la crittografia.

+0

vedere anche la risposta da shatk, il modulo-opzione managedConnectionFactoreName deve essere fornita. –

5

Di seguito si riporta la completa sicurezza configurazione del dominio per 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

È effettivamente possibile avere lo stesso modulo di sicurezza per più origini dati? Ho letto la documentazione di jboss e menzionano solo una fonte dati: jboss.jca: service = {type}, name = {jndiName}. Vedo che hai specificato name = dataSource-1-PoolName, dataSource-2-PoolName –

2

In un ambiente CentOS rilascio 6.3, JBoss-EAP-6.0.0 questo ha funzionato solo con codice = "SecureIdentity", usando picketbox-4.0.9.Final-redhat-1.jar per la crittografia della password.

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

= "SecureIdentityLogin" dà "PB00024: Accesso negato: chiamante autenticato: null".

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

1

creare semplici progetto con barattoli ( 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) ed eseguire classe personalizzata con args ingresso:

public class Test { 

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

    } 

} 

uscita sarà: Encoded password: 3d5bc094c128 ...

2

Per chi è interessato a farlo funzionare su Windows (e nel mio caso su 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 

Spero che questo aiuti, Matteo