Pergunta

Estou tendo problemas para executar uma consulta complexa contra o nosso servidor LDAP da empresa. Eu estou usando o seguinte script Perl:

use Data::Dumper;
use Net::LDAP;

die "Can't connect to LDAP-Server: $@\n" 
    unless $ldap = Net::LDAP->new( 'xLDAPx' );


foreach my $filter ( 'ou=Personal', 'ou=BAR', 'ou=Personal,ou=BAR', 'ou=Personal,ou=FOO,o=FOO,dc=foo,dc=com' )
{ 
    $mesg = $ldap->search( base => "o=FOO,dc=foo,dc=com", filter => $filter );
    print Dumper($mesg), "\n\n";
}

Enquanto o primeiro dois filtros de trabalho (como em devolver os valores esperados) o último e complexa não. Devolve uma matriz vazia. O que realmente me intriga é que exatamente a mesma string de consulta funciona quando eu usá-lo com uma ferramenta como o navegador de Softerra LDAP.

Eu também tentei a mesma consulta usando PHP ldap_search & co, sem sucesso.

Alguém pode lançar alguma luz sobre isso?

Obrigado por ler

Holli

Edit: Esta é a estrutura do servidor:

Server
    ou=FOO
        ou=...
        ou=Personal
            uid=something

Eu preciso de uma lista de uids.

Foi útil?

Solução

Eu acho que você quer que ele seja mais como (&(ou=Personal)(ou=FOO)(o=FOO)(dc=foo)(dc=com)). Mas você não é de todo claro sobre o que você quer exatamente, então eu não posso fazer um filtro para você.

Editado para adicionar: Eu estou supondo que isto é o que você quer fazer: (|(ou=Personal)(ou=FOO))

Outras dicas

A razão é que você não está fornecendo cordas filtro sintaticamente corretas, mas partes de um DN. Eu não posso imaginar isso funciona em Ldap Browser -. Eu só me tentou, sem sucesso

Os dois primeiros são seqüências de filtro corretas. Eles filtro em um único atributo de objeto em um "({atributo} = {value})" moda. O primeiro ( "OU = Pessoais") retornaria qualquer OU chamado "Personal" dentro de sua base de pesquisa.

Se você explicar mais detalhadamente o que você está tentando encontrar Eu provavelmente pode dizer o que expressão de filtro que você precisa.

Escrever um filtro que está em conformidade com RFC 2254 e depois ver o que acontece. Você não precisa de uma consulta complexa, você quer um atributo para cada entrada em um ramo. Olhe para o argumento attrs para o método de pesquisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top