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.
[code]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;
}
}[/code]
[quote=bruno_cobra]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.
[code]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;
}
}[/code][/quote]
Utilize o método abaxio para encriptar a senha
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public String hashMD5Password(String password) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(password.getBytes("UTF8"));
String md5Password = Base64.encode(digest.digest());
return "{MD5}" + md5Password;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
Slow17
Fevereiro 26, 2014, 3:33pm
#3
Droga,agora que vi que esse post é de 2009,postei porém nem vi que o cara ressusitou LOL