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=-
ç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.
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];
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