Déchiffrer le mot de passe de vos sources de données WebLogic

Ce mois-ci, nous vous présentons comment déchiffrer les mots de passe des sources de données configurées sur serveur Weblogic.
Il vous est très certainement arrivé de vouloir vous connecter à une base de données et de réaliser que vous avez oublié le mot de passe de l’utilisateur du schéma !
Pas de panique, si la console ne vous permettra pas de récupérer ce mot de passe, il est tout à fait possible de le faire en ligne de commande.
Nous vous présentons ici comment, en quelques étapes :

  1. Tout d’abord, il faut localiser le fichier de configuration de votre source de données :
  2. /u01/Oracle/Middleware/user_projects/domains/wls_domain/server/bin/jdbc/TESTDatasource-9845-jdbc.xml

  3. Éditez ce fichier et recherchez le mot de passe codé :
  4. <password-encrypted>{AES}tiy7Zi87XRGzZwwq9+68eBpV6lHnEbRg/pwJ7vKSDaI=</password-encrypted>

  5. Puis définissez vos variables d’environnement :
  6. /u01/Oracle/Middleware/user_projects/domains/wls_domain/server/bin/setWLSEnv.sh

  7. Lancez WebLogic Scripting Tool :
  8. /u01/Oracle/Middleware/user_projects/domains/wls_domain/server/common/bin/wlst.sh

  9. Enfin exécutez les commandes WLST suivantes :
wls:/offline> from weblogic.security.internal import *
wls:/offline> from weblogic.security.internal.encryption import *
wls:/offline> password = "{AES}tiy7Zi87XRGzZwwq9+68eBpV6lHnEbRg/pwJ7vKSDaI="
wls:/offline> path = "/u01/Oracle/Middleware/user_projects/domains/wls_domain/security"
wls:/offline> encryptionService = SerializedSystemIni.getEncryptionService(path)
wls:/offline> clearOrEncryptedService = ClearOrEncryptedService(encryptionService)
wls:/offline> print "password=" + clearOrEncryptedService.decrypt(password)
password=Welcome1
wls:/offline> exit()

Voilà, c’est récupéré !
Mais surtout, adoptez une politique de sécurité pour vos mots de passe et conservez les en lieu sûr !
Nb: testé sur Weblogic Server 11.1.1.6.