Rechercher dans les attributs d'Active Directory via LDAP [Résolu]

Signaler
Messages postés
12
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
3 mars 2006
-
tntn078
Messages postés
1
Date d'inscription
lundi 4 février 2008
Statut
Membre
Dernière intervention
4 février 2008
-
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

Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
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.
Messages postés
12
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
3 mars 2006

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];
Messages postés
1
Date d'inscription
lundi 4 février 2008
Statut
Membre
Dernière intervention
4 février 2008

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