IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[LDAP] Recherche LDAP/AD en php


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [LDAP] Recherche LDAP/AD en php
    Bonjour,
    Je souhaite mettre en place un trombinoscope sur mon Intranet (600 personnes);Je ne souhaite pas en trouver un tout fait.
    Je viens juste de commencer le projet et je rencontre un problème lorsque je lance une recherche dans mon active Directory.

    Le message d'erreur est le suivant : il s'arrête à la ligne "Unable to search LDAP serveur".
    J'ai remarqué que si j'enlève le "@" avant ldap_search, il me mets une erreur sur la fonction ldap-search. J'ai soit "Bad search filter, soit Operation error in function search....bref, je tourne en rond.

    Ci-joint mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
     
    $ldap_server = "ldap://domA.domB.dom";
     
     
    // Set the base dn to search the entire directory.
     
    $base_dn = "DC=domA, DC=domB, DC=dom";
     
    // Show only user persons
    $filter = "(&(objectClass=user)(objectCategory=person)
    (|(name=$name*)(displayname=$name*)(cn=$name*)))";
     
    // Enable to show only users
    // $filter = "(&(objectClass=user)(cn=$*))";
     
    // Enable to show everything
    // $filter = "(cn=*)";
     
    // connect to server
     
    if (!($connect=@ldap_connect($ldap_server))) {
         die("Could not connect to ldap server");
    }
     
    // bind to server
     
    //if (!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
    //     die("Unable to bind to server");
    //}
     
    if (!($bind=@ldap_bind($connect))) {
         die("Unable to bind to server");
    }
     
     
    // search active directory
     
    if (!($search=@ldap_search($connect, $base_dn, $filter))) {
         die("Unable to search ldap server");
    }
     
    $number_returned = ldap_count_entries($connect,$search);
    $info = ldap_get_entries($connect, $search);
     
    echo "The number of entries returned is ". $number_returned."<p>";
     
    for ($i=0; $i<$info["count"]; $i++) {
       echo "Name is: ". $info[$i]["name"][0]."<br>";
       echo "Display name is: ". $info[$i]["displayname"][0]."<br>";
       echo "Email is: ". $info[$i]["mail"][0]."<br>";
       echo "Telephone number is: ". $info[$i]["telephonenumber"][0]."<p>";
    }
    ?>
    Ma question est : est ce mon code qui bug ou y a t'il une modif à faire dans l'AD?

    Environnement : Deux domaines (enfant : DomA) et racine (domB) et un exchange 2003. Tout tourne en windows server 2003.
    Serveur php : en local sur ma machine, avec WAMP5 (Ps : LDAP est activé dans les extensions php).

    Merci pour les réponses que vous pourriez poster.

    Ed

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Est tu sur de ton schema ldap, notamnent du nom de tes filtres ?
    J'ai jamais essayé sur un AD, mais j'ai déja eu ce problème sur des requettes ldap.

    Essaye de t'y connecter avec un utilitaire comme http://ldapadmin.sourceforge.net/.

    Peut être un problème d'accès, sur ton ldap_bind verifie ton login/pass.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse rapide.
    En ce qui concerne mon architecture AD, c'est la suivante:
    .dom
    Domaine racine
    Domaine enfant
    Site A
    OU1
    OU2
    OU3
    Utilisateurs
    Site B
    OU1
    OU2
    OU3
    Utilisateurs
    Site C
    etc

    En ce qui concerne ldapAdmin, j'essai de me connecter. c'est un peu chaud car apparement il faudrait si'dentifier en utilisant cn=moi, ou=utilisateurs, ou=site A, dc=dom enf, dc=dom rac, dc=dom et mon mot de passe pour le bind???
    Et pour le baedn, je dois descendre jusqu'ou dans mon archi AD, je mets juste dom enf.dom rac.dom ou je pars de mon ou utilisateurs pour remonter jusqu'à .dom?

    Ensuite tu me parles de mes filtres, je cherche juste le nom de la personne, il doit donc être égale à :
    Merci
    Ed

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    En ce qui concerne ldapAdmin, j'essai de me connecter. c'est un peu chaud car apparement il faudrait si'dentifier en utilisant cn=moi, ou=utilisateurs, ou=site A, dc=dom enf, dc=dom rac, dc=dom et mon mot de passe pour le bind???
    Oui c'est ça tu doit utiliser le dn complet de ton administrateur.
    Et pour le baedn, je dois descendre jusqu'ou dans mon archi AD, je mets juste dom enf.dom rac.dom ou je pars de mon ou utilisateurs pour remonter jusqu'à .dom?
    Pour le basedn ça correspond au point le plus "haut" de ta structure ldap
    Ex pour un domaine qui s'appel dom.org ton base dn doit être dc=dom,dc=org
    (Par contre je ne suis pas certain pour un AD ça fait longtemps que je ne l'ai pas fait)

    Pour le filtre ça doit être ça je pense tout dépend du schéma utilisé par un AD.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ca y est, cela fonctionne.
    Il faut impérativement s'authentifier lorsqu'on fait le bind:

    L'authentification est la suivante : user@nomdedomaine.net ou dom ou local (en fonction de votre archi).

    Merci FredPont pour ce coup de pouce. J'ai également réussi a utiliser ldapadmin hier soir.

    A bientot pour d'autres questions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LDAP] Recherche des groupes A.D d'un user via php
    Par reyel dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/04/2007, 12h03
  2. [LDAP] Où trouver ce module PHP pour Windows
    Par hutchuck dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/11/2005, 09h57
  3. [Sécurité] LDAP : recherche groupée ?
    Par webtheque dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2005, 20h36
  4. [LDAP] recherche dans l'annuaire
    Par Overflow64 dans le forum Développement
    Réponses: 1
    Dernier message: 23/03/2005, 14h34
  5. [LDAP] recherche dans differents container LDAP avec Java
    Par touinth dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 01/07/2004, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo