Question

Je ne parviens pas à exécuter une requête complexe sur le serveur LDAP de notre société. J'utilise le script Perl suivant:

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";
}

Alors que les deux premiers filtres fonctionnent (comme pour renvoyer les valeurs attendues), le dernier et complexe ne fonctionne pas. Il retourne un tableau vide. Ce qui me rend vraiment perplexe, c’est que la même chaîne de requête fonctionne exactement lorsque je l’utilise avec un outil tel que le navigateur LDAP Softerra.

J'ai également essayé la même requête en utilisant le ldap_search de PHP & amp; co, en vain.

Quelqu'un peut-il nous éclairer?

Merci d'avoir lu

holli

Modifier: Voici la structure du serveur:

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

J'ai besoin d'une liste des uids.

Était-ce utile?

La solution

Je pense que vous voulez que ce soit plus comme (& amp = (ou = Personnel) (ou = FOO) (o = FOO) (dc = toto) (dc = com)) . Mais vous ne savez pas exactement ce que vous voulez, je ne peux donc pas vous faire de filtre.

Modifié pour ajouter: j'imagine que c'est ce que vous voulez faire: (| (ou = Personnel) (ou = FOO))

Autres conseils

La raison en est que vous ne fournissez pas de chaînes de filtre syntaxiquement correctes, mais des parties d'un DN. Je ne peux pas imaginer que cela fonctionne dans Ldap Browser - je viens de m'essayer moi-même sans succès.

Les deux premiers sont des chaînes de filtres correctes. Ils filtrent sur un seul attribut d'objet dans une " ({attribut} = {valeur}) " mode. Le premier ("ou = Personnel") renverrait toute unité d'organisation nommée "Personnel". dans votre base de recherche.

Si vous expliquez plus en détail ce que vous essayez de trouver, je peux probablement vous dire quelle expression de filtre vous avez besoin.

Écrivez un filtre conforme à la RFC 2254 .  et ensuite voir ce qui se passe. Vous n'avez pas besoin d'une requête complexe, vous voulez un attribut pour chaque entrée d'une branche. Regardez l'argument attrs pour la méthode de recherche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top