Boa noite, galera.
Possuo uma aplicação que faz o login através de uma base LDAP. Além disso, a aplicação também permite a alteração das senhas dos usuários.
Bom, o método que criei consegue fazer a alteração das senhas, o problema é que elas ficam em plain text, e não criptografadas, como eu gostaria. Alguém sabe me dizer o que preciso modificar para conseguir isso?
Muito obrigado.
public class LDAP {
public boolean updateSenha( username, newPassword ) {
String uid = "uid="+username;
Hashtable env = new Hashtable();
env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
env.put( Context.PROVIDER_URL, "ldap://ldap.server.com.br:389" );
env.put( Context.SECURITY_AUTHENTICATION, "simple" );
env.put( Context.SECURITY_PRINCIPAL, "cn=admin,dc=server,dc=com,dc=br" );
env.put( Context.SECURITY_CREDENTIALS, "teste123" );
try {
DirContext dico = new InitialDirContext( env );
ModificationItem[] moit = { new ModificationItem( DirContext.REPLACE_ATTRIBUTE
, new BasicAttribute( "userPassword", newPassword ) ) };
dico.modifyAttributes( uid+",ou=Usuarios,dc=server,dc=com,dc=br", moit );
dico.close();
return true;
} catch ( AuthenticationException ae ) {
ae.printStackTrace();
} catch ( NoPermissionException npe ) {
npe.printStackTrace();
} catch ( NamingException ne ) {
ne.printStackTrace();
} catch ( NullPointerException npe ) {
npe.printStackTrace();
} catch ( Exception e ) {
e.printStackTrace();
}
return false;
}
}