Segue um exemplo de conexão com LDAP.
Acho que pode te ajudar.
[code]public class LdapContextCreation {
public static void main(String[] args) {
LdapContextCreation ldapContxCrtn = new LdapContextCreation();
LdapContext ctx = ldapContxCrtn.getLdapContext();
}
public LdapContext getLdapContext(){
LdapContext ctx = null;
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,“com.sun.jndi.ldap.LdapCtxFactory”);
env.put(Context.SECURITY_AUTHENTICATION, “Simple”);
//it can be <domain\\userid> something that you use for windows login
//it can also be
env.put(Context.SECURITY_PRINCIPAL, "Enter user name here");
env.put(Context.SECURITY_CREDENTIALS, "Password goes here");
//in following property we specify ldap protocol and connection url.
//generally the port is 389
env.put(Context.PROVIDER_URL, "ldap://xxxxxxxx:389");
ctx = new InitialLdapContext(env, null);
System.out.println("Connection Successful.");
}catch(NamingException nex){
System.out.println("LDAP Connection: FAILED");
nex.printStackTrace();
}
return ctx;
}
Sem esse ContextFactory ele não sabe que tipo de serviço vai ser usado como contexto (LDAP? JNDI em um AppServer?), ele vai usar um contexto padrão que depende do ambiente. Como esse contexto padrão provavelmente nao usa autenticação, acaba aceitando qualquer coisa, mas não aconteceu nenhuma conexão com AD.
Conclusão: precisa colocar o Context.INITIAL_CONTEXT_FACTORY.
[quote=thiagoRibeiro]Fiz um teste com esse exemplo mas estou recebendo o erro
[/quote]
Agora sim você tomou um erro retornado pelo AD.
Para interpretar esses erros você precisa pegar esse codigozinho depois do “data”, no caso é 52e. Usando uma tabelinha como essa (http://www-01.ibm.com/support/docview.wss?uid=swg21290631) vc obtém o significado e dá o tratamento apropriado para sua aplicação: 52e invalid credentials
Em um LDAP normal precisaria colocar essa stringona, mas no AD isso não é necessário. Basta colocar