извлечение атрибутов из AD с помощью поиска ldap или чтения, не зная выделенного имени - PullRequest
0 голосов
/ 02 февраля 2012

Я пытаюсь получить информацию (описание и почту) из моего активного каталога, не зная моего DN для всех пользователей, которые вошли в мое приложение, используя свои учетные данные домена, я могу получить информацию только при условии, что я предоставлюdn, из которых каждый dn сильно отличается для всех пользователей, вызванных отделами и организационными единицами, привязка работает нормально, проблема заключается только в получении данных, указанных выше.

Мой код выглядит следующим образом. NB:Я изменил значения некоторых полей.

<?php
 ldap_authenticate();
 function ldap_authenticate() {

 //using ldap bind
 $ldaprdn  = 'username';//ldap rdn or dn
 $ldappass = 'password';// associated password
 $filter="(&(objectClass=user))";
 $justthese = array("sn","displayName");
 //connect to ldap server
 $ldapconn = ldap_connect("hostname.net");

 if ($ldapconn){
  //binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
  //verify binding
    if($ldapbind){
        $dn='CN=Donald Mailula,OU=Users,OU=Group Testing,OU=Central Office,DC=hostname,DC=net';
        $sr=ldap_read($ldapconn,$dn,$filter);
        $entry = ldap_get_entries($ldapconn, $sr);
        echo $entry[0]["mail"][0] . " is the email address of the cn your requested<br/>";
        echo $entry[0]["description"][0];
    }else{
       echo "LDAP bind failed...";
    }
  }
}

?>

Моя главная проблема в том, что я не смогу знать dn всех пользователей, которые вошли в системупоэтому мне нужен способ поиска записи без dn или как сначала получить dn, а затем искать нужную мне запись.

Возможно ли это, ребята?

Пожалуйста, помогите

Спасибо D

1 Ответ

3 голосов
/ 02 февраля 2012

То, что вам нужно, называется ldap_search, вы можете найти полный образец здесь

<?php
// $ds is a valid connexion id (samAccountName)
$dn = "o=Ma Compagnie, c=FR";
$filter="(|(objectCategory=person)(samAccountName=$ds))";
$justtheseattributes = array( "ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justtheseattributes);
$info = ldap_get_entries($ds, $sr);
echo $info["count"]." found entries.\n";
?>
...