Я использую PHP для запроса Active Directory. Мне нужно получить несколько атрибутов (офисный телефон и электронная почта) всех членов указанной группы.
Я могу получить полный CN пользователей в группе, например:
$results = ldap_search($ds,$ldapbase, "cn=" . $group);
$entries = ldap_get_entries($ds, $results);
$members = $entries[0]['member'];
for ($i=0; $i< count($members) -1; $i++) {
$mem = $members[$i];
if($mem != "") {
$groupMembers[] = $mem;
}
}
даст мне массив членов группы, как это:
CN=Testlastname1\, Testfirstname1,OU=Personnel,OU=All Staff,DC=domain,DC=domainsuffix
CN=Testlastname2\, Testfirstname2,OU=All Staff,DC=domain,DC=domainsuffix
etc...
Мой вопрос, как я могу взять эти результаты и запросить атрибуты, которые мне нужны, а именно офисный телефон и адрес электронной почты для каждого? Или я совсем не прав?
Я видел некоторые вещи, близкие к этому, и некоторые (несколько византийские) примеры, которые я не могу заставить работать. Я играл с различным синтаксисом фильтра безрезультатно. Должен быть способ извлечь отдельные результаты из успешного группового запроса, извлечь объект AD, описанный результатом, и извлечь требуемые свойства, но я пока не нашел его.
Любая помощь с благодарностью.
КСТАТИ — PHP версии 5.5.7 с использованием FastCGI на Windows 2008R2, IIS7.5
Следующее должно работать как-то:
foreach ($groupsmembers as $groupmember) {
$result = ldap_search($ds,$groupmember, '*', 'officephone,mail');
$entries = ldap_get_entries($ds, $results);
$users[$groupmember]['officephone'] = $entries[0]['officephone'][0];
$users[$groupmember]['mail'] = $entries[0]['mail'][0];
}
Главное, что вы используете извлеченный DN (который CN=Testlastname1\, Testfirstname1,OU=Personnel,OU=All Staff,DC=domai....
) в качестве базы поиска, а затем извлеките из нее атрибуты электронной почты и офисного телефона.
На (Linux) -Commandline это будет выглядеть так:
ldapsearch -h ldap-server -b "CN=Testlastname1, Testfirstname1,OU=Personnel,OU=All Staff,DC=domain,DC=domainsuffix" * mail,officephone
надеюсь, это поможет
Других решений пока нет …