Rechercher dans les attributs d'Active Directory via LDAP

Résolu
cciiia Messages postés 12 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 3 mars 2006 - 20 janv. 2006 à 17:06
tntn078 Messages postés 1 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 4 février 2008 - 4 févr. 2008 à 17:51
Bonjour à tous!

Je suis en train de développer un site intranet qui, pour l'authentification et donc l'accès à la partie administration, doit se baser sur un Active Directory. J'arrive à me connecter, à chercher et trouver un objet dans l'Active Directory sans problème.
Je voudrais savoir si quelqu'un sait s'il est possible de rechercher directement dans les attributs des objets (par exemple, le "samaccountname" d'un User) sans passer au préalable par un "DN" donné.
Exemple : je cherche le samaccountname "toto" dans mon Active Directory, sans connaître le "DN" de l'User possèdant ce samaccountname.

J'attends vos réponses. Peut-être que c'est impossible, mais ça vaut le coup de demander .
Cordialement,
-=KRAPUL=-

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2006 à 17:49
hello,

ça n'a pas grand rapport avec php ça...
C'est une requête LDAP à trouver, c'est tout.
Ma foi...essaye ;-) Cherche sur google le dialecte LDAP, et regarde quelles requêtes peuvent être faites pour te donner le résultat attendu.
Perso, je ne me souviens plus.
3
cciiia Messages postés 12 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 3 mars 2006
23 janv. 2006 à 12:14
Salut,


Voilà après plusieurs heures de recherche j'ai enfin trouvé le code qu'il me fallait...


J'ai accepté ta réponse "malalam" (même si ce n'est pas toi qui m'a apporté la solution) car cela pourra aider quelqu'un qui cherche à faire la même chose que moi!

@+

-=KRAPUL=-

Le code correspondant :

$ldap_server="adresse.ip.du.serveur";
$log="login_de_la personne";
$mylog = "monlogin";//Pour binder le serveur...
$mypass = "monmotdepasse";//Pour binder le serveur...


// Donner le DN de base pour la recherche.
$base_dn = "DC=exemple, DC=fr";


// Montrer seulement les personnes.
$filter = "(&(objectClass=user)(samaccountname=".$log.")(cn=*))";


// Se connecter au serveur
if (!([mailto:$connect=@ldap_connect($ldap_server $connect=@ldap_connect($ldap_server]))) {
die("Impossible de se connecter au serveur!");
}


// Binder le serveur
if (!([mailto:$bind=@ldap_bind($connect,$mylog,$mypass $bind=@ldap_bind($connect,$mylog,$mypass]))) {
die("Impossible de binder le serveur!");
}


// Cherche dans l'active directory
if (!([mailto:$search=@ldap_search($connect $search=@ldap_search($connect], $base_dn, $filter))) {
die("Impossible de chercher sur le serveur!");
}


//Compter les entrées retournées par la recherche
$number_returned = ldap_count_entries($connect,$search);
//Récupérer les entrées
$info = ldap_get_entries($connect, $search);


//Affichage du résultat
for ($i=0; $i<$info["count"]; $i++) {
@$nom = @$info[$i]["name"][0];
}
echo "Le login '"[mailto:.@$log."' .@$log."'] désigne "[mailto:.@$nom .@$nom];
3
tntn078 Messages postés 1 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 4 février 2008
4 févr. 2008 à 17:51
bonjour cciiia,

je suis en train de faire la même chose que toi, à la différence près que je ne reçois aucun résultat, alors que je devrais en avoir : ldap_count_entries ($connect, $search); me retourne 0

j'ai tout essayé, rien à faire, je ne comprends pas

si qq1 a une idée ...

d'avance merci

M
0
Rejoignez-nous