Получить полное имя из LDAP AD

Это мой код LDAP для аутентификации пользователя. Я должен показать полное имя пользователя после того, как пользователь вошел в систему. Как я могу получить полное имя пользователя из AD?

<?php
FUNCTION ldapCheckLogin ($username, $upasswd) {

$ldaphost = '10.20.30.40';
$ldapport = 389;
$ds = ldap_connect($ldaphost, $ldapport)
or die("Could not connect to our login server!");

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

if ($ds)
{
//$username = 'na\'; //OK - Congratulations! na\spups is authenticated.
$upname = 'iap\\' . $username;

$ldapbind = @ldap_bind($ds, $upname, $upasswd);

if ($ldapbind) {
//print "Congratulations! $username is authenticated.<BR><BR>";
ldap_unbind( $ds );
return true;
} else { //print "$username  - Access Denied!<BR><BR>";
return false;
}
} else {
return false;
}
}

?>

0

Решение

Вам нужно получить запись пользователя, используя ldap_search с пользователем samAccountName например (samaccountname=$username) или же userPrincipalName например (userprincipalname=$username . "@" . $domain.com ) в качестве атрибута фильтра.

samaccountname является уникальным только в области, тогда как userPrincipalName уникален по всему лесу.

Когда вы выполняете ldap_search, вам нужно включить cn или же displayName в атрибутах, чтобы вернуться.

Если поиск выполнен успешно, вам нужно обработать полученную запись и извлечь cn и / или displayName,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]