2012-05-09 56 views
12

En JBoss AS 5, tengo una fuente de datos definida en * -ds.xml pero pongo nombre de usuario/contraseña encriptada en * -jboss-beans.xml.JBoss AS 7.1 - fuente de datos cómo cifrar la contraseña

Ahora en JBoss AS 7.1, el origen de datos se define en standalone.xml o domain.xml. ¿Dónde coloco la contraseña cifrada en AS 7.1?

En otras palabras, ¿cómo se cifra y se asegura una contraseña clara en AS 7?

Respuesta

27

En AS7, puede usar SecureIdentityLoginModule para agregar un dominio de contraseña cifrada. Por ejemplo, se puede definir un dominio de seguridad en 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> 

A continuación, puede agregar a este dominio de seguridad en su fuente de datos particular que utiliza este ID de usuario combinación/PCD en standalone.xml o dominio .xml:

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

para cifrar la contraseña en sí, puede ejecutar este comando (por favor verificar las versiones de tarro picketbox y tarro de registro en su descarga AS7 particular, para sustituir en consecuencia):

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 

Esto le devolverá una contraseña encriptada que puede usar en su dominio de seguridad.

Puede leer más sobre el subsistema de seguridad JBoss AS7 here. Desde open source rocks, puede ver cómo funciona el código de codificación en el código fuente de SecureIdentityLogin. Notará en el código fuente que usa Blowfish para el cifrado.

+0

Véase también la respuesta de shatk, el módulo de opción managedConnectionFactoreName debe ser proporcionada. –

5

A continuación se muestra la completa seguridad de configuración de dominios para 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

¿Es posible tener el mismo módulo de seguridad para múltiples fuentes de datos? He estado leyendo la documentación de jboss y solo mencionan un origen de datos: jboss.jca: service = {type}, name = {jndiName}. Veo que ha especificado name = dataSource-1-PoolName, dataSource-2-PoolName –

2

En un entorno CentOS versión 6.3, JBoss EAP-6.0.0 esto sólo trabajó con código = "SecureIdentity", usando picketbox-4.0.9.Final-redhat-1.jar para cifrado de contraseña.

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

código = "SecureIdentityLogin" da "PB00024: Acceso denegado: persona que llama no autenticado: nulo".

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

1

crear proyecto sencillo con los tarros ( jboss- tala-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) y ejecutar clase personalizada con argumentos de entrada:

public class Test { 

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

    } 

} 

de salida será: codificados contraseña: 3d5bc094c128 ...

2

Para quién le interesa que esto se ejecute en Windows (y en mi caso en 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 

Espero que esto ayude, Matteo

Cuestiones relacionadas