Olha a forma que autentico o usuário na rede. É só passar o usuário, senha e o domínio no qual o usuário quer se autenticar, que o método retorna true caso consiga autenticar, caso contrário, levanta alguma exceção.
@SuppressWarnings("unchecked")
public boolean login(String pUsuario, String pSenha, String pDominio) throws Exception {
String lUrl = "LDAP://" + HOST + ":" + PORTA;
String lDn = pUsuario + "@" + pDominio;
Hashtable lMapAutenticacao = new Hashtable();
lMapAutenticacao.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
lMapAutenticacao.put(Context.SECURITY_AUTHENTICATION, "simple");
lMapAutenticacao.put(Context.PROVIDER_URL, lUrl);
lMapAutenticacao.put(Context.SECURITY_PRINCIPAL, lDn);
lMapAutenticacao.put(Context.SECURITY_CREDENTIALS, pSenha);
try {
@SuppressWarnings("unused")
DirContext lAutenticacaoContexto = new InitialDirContext(lMapAutenticacao);
return true;
}
catch (Exception lExcecao) {
if (lExcecao instanceof AuthenticationException) {
//Lance a exceção para Usuário e/ou Senha Incorretos
}
if (lExcecao instanceof NamingException) {
//Lance a exceção para problema de autenticação na rede
}
throw lExcecao;
}
}
Via JNDI é possível fazer algumas coisas bem básicas e usuais (como autenticar-se em um determinado sistema), mas outras coisas mais específicas (como mudar a senha, ou listar os grupos ao qual um usuário pertence) exigem acesso direto ao LDAP.
Estou com problemas também usando LDAP, peguei um projeto pronto e a função de Excluir email nao esta funcionando, soh isso.
Será que alguém pode me ajudar?
Estive olhando em vários foruns e constatei a utilização de várias bibliotecas para autenticação LDAP. Em nenhum encontrei um comparativo entre elas.
Alguem ja utilizou JLDAP (biblioteca pra implementação OpenLDAP, de LDAP)?
O que acham da propria JNDI do java para isso?