这是我验证用户身份的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 :(得分:0)
您需要使用ldap_search和用户samAccountName
来检索用户的条目,例如(samaccountname=$username)
或userPrincipalName
例如{} (userprincipalname=$username . "@" . $domain.com )
作为过滤器属性。
samaccountname
仅在域中是唯一的,而userPrincipalName
在整个林中都是唯一的。
执行ldap_search时,您需要在要返回的属性中包含cn
或displayName
。
如果搜索成功,则需要处理生成的条目并提取cn
和/或displayName
。