Pessoal,
Estou tentando fazer uma autenticação LDAP via JNDI. Segue o código abaixo. Acontece que têm horas que funciona corretamente e horas que deixa passar qualquer usuário, alguém poderia dizer onde está o erro.
package br.gov.ba.sei;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import br.com.itx.integration.AbstractConnector;
import br.com.itx.integration.DatabaseAliases;
import br.com.itx.integration.InterfaceHeaders;
import br.com.itx.util.WIMap;
public class AutenticaUsuario extends AbstractConnector {
boolean autenticado = false;
public boolean getConexao(String host, String user, String pass) {
Hashtable env = new Hashtable(5);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, host);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, pass);
DirContext ctx = null;
try {
ctx = new InitialDirContext(env);
autenticado = true;
} catch (Exception e) {
autenticado = false;
e.printStackTrace();
}
return autenticado;
}
/* Método principal que eu chamo da minha aplicação onde:
* host = ldap://netuno2.netuno.intranet
* user = o usuário digita
* senha = o usuário digita
*/
public void execute(WIMap wiMap, DatabaseAliases db, InterfaceHeaders head){
if (this.getConexao(wiMap.get("host"),
wiMap.get("tmp.txtLogin"),
wiMap.get("tmp.txtSenha"))){
wiMap.put("pvt.wilogin", wiMap.get("wi.session.ip"));
wiMap.put("pvt.login.login", wiMap.get("tmp.txtLogin"));
} else {
wiMap.remove("pvt.wilogin");
wiMap.remove("pvt.login.login");
}
}
}
T+ Luciano