web-dev-qa-db-fra.com

JBoss AS 7.1 - source de données comment chiffrer le mot de passe

Dans JBoss AS 5, j'ai une source de données définie dans * -ds.xml mais je mets un nom d'utilisateur/mot de passe crypté dans * -jboss-beans.xml.

Maintenant, dans JBoss AS 7.1, la source de données est définie dans standalone.xml ou domain.xml. Où dois-je placer le mot de passe crypté dans AS 7.1?

En d'autres termes, comment un mot de passe clair est-il crypté et sécurisé dans AS 7?

15
Eric

Dans AS7, vous pouvez utiliser SecureIdentityLoginModule pour ajouter un domaine de mot de passe chiffré. Par exemple, vous pouvez définir un domaine de sécurité dans standalone.xml ou 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>

Ensuite, vous pouvez ajouter ce domaine de sécurité dans votre source de données particulière qui utilise cette combinaison ID utilisateur/pwd dans standalone.xml ou domain.xml:

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

Pour chiffrer le mot de passe lui-même, vous pouvez exécuter cette commande (vérifiez les versions du fichier jar et du fichier jar de journalisation dans votre téléchargement AS7 afin de les remplacer en conséquence):

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

Cela renverra un mot de passe crypté que vous pourrez utiliser dans votre domaine de sécurité.

Vous pouvez en savoir plus sur le sous-système de sécurité JBoss AS7 ici . Depuis open source rocks , vous pouvez voir comment le code de codage fonctionne dans le code source de SecureIdentityLogin . Vous remarquerez dans le code source qu’il utilise Blowfish pour le chiffrement.

34
CoolBeans

Vous trouverez ci-dessous la configuration complète du domaine de sécurité pour 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>
5
shatk

Pour qui est intéressé à avoir cette exécution sur Windows (et dans mon cas sur 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

J'espère que cela vous aidera, Matteo

3
Matteo Pelucco

Dans un environnement CentOS version 6.3, JBoss-EAP-6.0.0, cela ne fonctionnait qu'avec code = "SecureIdentity", À l'aide de picketbox-4.0.9.Final-redhat-1.jar pour le cryptage du mot de passe. 

<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" donne "PB00024: accès refusé: appelant non authentifié: null". 

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

2
DonZitrone

créer un projet simple avec des bocaux ( jboss-logging-3.1.4.GA-redhat-2.jar boîte de piquetage-4.1.1.Final-redhat-1.jar boîte de piquetage -commons-1.0.0.final-redhat-3.jar picketbox-infinispan-4.1.1.Final-redhat-1.jar) et exécutez une classe personnalisée avec les arguments d'entrée:

public class Test {

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

    }

}

La sortie sera: Mot de passe codé: 3d5bc094c128 ...

1
user3136131