Как вы можете выполнять поиск в Active Directory через PHP? Без необходимости перекомпиляции PHP. PHP версия is 5.3Поиск в Active Directory через PHP
Я хочу найти отображаемое имя лица от имени пользователя. Веб-сервер - IIS 6, а PHP - с использованием FastCGI.
я получить имя пользователя с:
$cred = explode('\\',$_SERVER['REMOTE_USER']);
if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)");
list($domain, $user) = $cred;
return $user;
Так как я могу тогда найти имя? например DoeJ = John Doe
Edit:
Попытка для поиска пользователя, но не знаете, как найти "базовый DN". Не иметь прямого доступа к серверу Active Directory или иметь права администратора, поэтому подключайтесь анонимно.
<?php
//using ldap bind anonymously
// connect to ldap server
$ldapconn = ldap_connect("example.co.uk")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding anonymously
$ldapbind = ldap_bind($ldapconn);
if ($ldapbind) {
echo "LDAP bind anonymous successful...";
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0);
$dn = "CN=Users"; // also tried DC=example,DC=co,DC=uk
$filter="(SAMAccountName=username)";
$justthese = array("ou", "sn", "givenname", "mail");
$sr=ldap_search($ldapconn, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
echo $info["count"]." entries returned\n";
} else {
echo "LDAP bind anonymous failed...";
}
}
?>
Сбой на ldap_search: Внимание: ldap_search() [function.ldap-поиск]: Поиск: Операции ошибка
Если я использую 'ldapbind = ldap_bind ($ ldapconn);' он возвращает true, поэтому допускайте анонимные привязки. Также попытался «$ filter =» (sAMAccountName = 'username') "; ' поэтому не уверен, что он сбой на уровне фильтра, DN или «$ justthese» – SamWM
Не указывайте имя пользователя в вашей строке фильтра ('$ filter =" (sAMAccountName = имя пользователя) ";' ** NOT ** ' $ filter = "(sAMAccountName = 'username')"; ') И, возможно, я не объяснил это на 100% правильно: Active Directory не позволяет анонимным пользователям читать из записей, кроме' RootDSE', который является абсолютным корнем из Дерево LDAP. Поэтому 'ldap_bind()' действительно может возвращать 'true', но это не означает, что вам разрешено обращаться к дереву LDAP. Учитывая сообщение об ошибке, я предполагаю, что ваша * базовая DN * является первой проблемой для решения. –