Tive um problema com a senha do Weblogic e resolvi criar soluções para resetar a senha. O inconveniente é que não recuperamos a senha e sim apagamos e criamos ela novamente. E se quisermos recuperar? Primeiro vamos à solução de apagar a senha, após isso veremos como recuperar a senha sem a necessidade de apagá-la - ideal e menos trabalhoso.
Existem vários "how-to" na internet para resetar a senha do Weblogic, mas para facilitar criei um bash script.
Esse script só funciona para servers que utilizem o DefaultAuthenticator.
Segue abaixo o código dele:
# Author: Thiago Galbiatti Vespa
# 09/17/2010
## Please configure this variables
WL_HOME="/home/thiago/Oracle/Middleware/wlserver_10.3/server/bin"
DOMAIN_HOME="/home/thiago/Oracle/Middleware/user_projects/domains/sample_domain"
ADMIN_SERVER_NAME="AdminServer"
BACKUP_HOME="/home/thiago/domainBckp"
### End
NEW_USERNAME="$1"
NEW_PASSWORD="$2"
if [ -z $1 ] ; then
echo "Please inform the new username!";
exit 1;
fi
if [ -z $2 ] ; then
echo "Please inform the new password!";
exit 1;
fi
NOW=`date +%y%m%d%H%m`
# Backup the domain
tar cvzf ${BACKUP_HOME}/${ADMIN_SERVER_NAME}-${NOW}.tar.gz ${DOMAIN_HOME}
# Weblogic enviroment
. ${WL_HOME}/setWLSEnv.sh
# New DefaultAuthenticatorInit.ldift
java weblogic.security.utils.AdminAccount ${NEW_USERNAME} ${NEW_PASSWORD} .
# Move DefaultAuthenticatorInit.ldift to security dir
mv DefaultAuthenticatorInit.ldift ${DOMAIN_HOME}/security/DefaultAuthenticatorInit.ldift
# Replace the old boot.properties
echo "username=$1" > ${DOMAIN_HOME}/servers/${ADMIN_SERVER_NAME}/security/boot.properties
echo "password=$2" >> ${DOMAIN_HOME}/servers/${ADMIN_SERVER_NAME}/security/boot.properties
# This folder will be recreated
rm -rf ${DOMAIN_HOME}/servers/${ADMIN_SERVER_NAME}/data/ldap/
Para o Weblogic Portal que utiliza o SQLAutenticator como padrão, basta alterar na tabela de usuários e grupos, utilizando o código abaixo.
INSERT INTO GROUPMEMBERS (G_NAME, G_MEMBER) VALUES ('Administrators', 'portaladmin');
INSERT INTO GROUPMEMBERS (G_NAME, G_MEMBER) VALUES ('PortalSystemAdministrators', 'portaladmin');
Achei também alguns códigos que prometem recuperar a senha do Weblogic, o problema é que ele só funciona com 3DES e não com AES. Que é a criptografia que está sendo utilizada pelo meu Weblogic 10.3.2.
Funçando um pouco nas classes do Weblogic achei algumas responsáveis pela criptografia. Deu um bom trabalho para descobrir como o Weblogic fazia, pois envolve criptografia AES e classes internas do Weblogic, mas foi a melhor pro meu caso e agora é bem simples de se executar. Basta passar o serviço de criptografia do Weblogic e mandar descriptografar :D.
ClearOrEncryptedService ces= new ClearOrEncryptedService(es);
System.out.println(ces.decrypt(pass));
Pronto! Estou disponibilizando também essa classe pra quem só quiser executar. O comando para executar é o seguinte:
por exemplo:
E o dado descriptografado irá aparecer no console! Funciona em Windows também :).
Google+
Boa noite Thiago tudo bem?
Por acaso você não teria o schema para decriptografar as senhas do SQLAuthenticator gravadas no banco como SHA-1 ?
Valeu.