Galera preciso buscar todos os usuarios que esta salvos em um servidor LDAP alguem ja conseguiu fazer isso ?
o que consegui ate agora foi fazer a conexao com o servidor
Hashtable authEnv = new Hashtable(11);
authEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
authEnv.put(Context.PROVIDER_URL, "ldap://192.168.1.167:389");
authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
authEnv.put(Context.SECURITY_PRINCIPAL, "cn=admin,dc=consisanet,dc=com");
authEnv.put(Context.SECURITY_CREDENTIALS, PASSWD);
try {
DirContext context = new InitialDirContext(authEnv);
System.out.println("Autenticado com sucesso no servidor LDAP");
return context;
} catch (Exception e) {
e.printStackTrace();
return null;
}
Como buscar todos os usuarios ?
muito agradecido se alguem poder me dar uma ajuda aqui vai o que consegui fazer para tentar buscar os usuarios
package acessldap;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.SearchResult;
public class AcessLDAP {
public static final String SEARCHBASE = "ou=person, dc=consisanet, dc=com";
public static void main(String[] args) {
DirContext dircontext = ConnectServiceLDAP.connect();
//tentando buscar dados no servidor LDAP
String login = "[email removido]";
String senha = "11111111";
Attributes attributes = new BasicAttributes(Boolean.FALSE);
attributes.put(new BasicAttribute("uid", login));
attributes.put(new BasicAttribute("userPassword", senha));
String atributosRetorno[] = new String[] { "uid" };
System.out.println("Buscando.......");
try {
NamingEnumeration resultado = dircontext.search(SEARCHBASE, attributes, atributosRetorno);
while(resultado.hasMore())
{
SearchResult sr = (SearchResult) resultado.next();
Attributes atributos = sr.getAttributes();
for (NamingEnumeration todosAtributos = atributos.getAll(); todosAtributos.hasMore();) {
Attribute attrib = (Attribute) todosAtributos.next();
String nomeAtributo = attrib.getID();
System.out.println("Atributo:" + nomeAtributo);
for (NamingEnumeration e = attrib.getAll(); e.hasMore();) {
System.out.println("\tvalor:" + e.next());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
mas isso me retornou o seguinte erro
javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'ou=person, dc=consisanet, dc=com'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3066)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1826)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1749)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1741)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:344)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:299)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:281)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:265)
at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:210)
at acessldap.AcessLDAP.main(AcessLDAP.java:33)
desde ja agradeço pela ajuda