[RESOVILDO] Buscar em servidor LDAP

2 respostas
C

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

2 Respostas

F

você já conseguiu fazer uma query LDAP?
usa algum LDAP Client?

C

Agora na verdade funciou

o person que passei ali naum existe mesmo o que existe é People

passei Pèople la e ele esta me retornando os dados corretamente

valeu pela respota ate mais

Criado 26 de julho de 2012
Ultima resposta 26 de jul. de 2012
Respostas 2
Participantes 2