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