Это мой код 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;
}
}
?>
Вам нужно получить запись пользователя, используя ldap_search с пользователем samAccountName
например (samaccountname=$username)
или же userPrincipalName
например (userprincipalname=$username . "@" . $domain.com )
в качестве атрибута фильтра.
samaccountname
является уникальным только в области, тогда как userPrincipalName
уникален по всему лесу.
Когда вы выполняете ldap_search, вам нужно включить cn
или же displayName
в атрибутах, чтобы вернуться.
Если поиск выполнен успешно, вам нужно обработать полученную запись и извлечь cn
и / или displayName
,
Других решений пока нет …