我放弃:(
在ubuntu中使用ldapsearch:
ldapsearch -x -LLL -h xx.xxxx.xx:3268 -D login -w password -b "DC=uni-xx,DC=xx" -v -s sub "userprincipalname=xx8870@student.xxx.xx"
返回此用户的正确信息。
移动到同一服务器上的php:
if (($connect = ldap_connect($ldap_server, $obj->port))) {
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, $obj->LDAP_OPT_PROTOCOL_VERSION);
$dn = $obj->contexts; //"DC=uni-xx,DC=xx"
$bu = $obj->bind_user; //login
$bp = $obj->bind_pw; //password
$bind = ldap_bind($connect, $bu, $bp);
if($bind){
$is_tu_user = ldap_search($connect, $dn, "(userprincipalname=*xx8870*)", array("cn", "mail"));
echo ldap_error($connect);
$info = ldap_get_entries($connect, $is_tu_user);
print_r(" sss " . json_encode($info));die();
}
}
返回具有零个元素的数组:
{"count":0}
PHP是7.2版。 LDAP扩展已启动并正在运行。
答案 0 :(得分:0)
最后找到了罪魁祸首:在PHP代码中,我以“ ldap://xx.xxxx.xx” 的形式提供了服务器地址,我猜这是错误的方式。我没有在unix shell命令中使用协议。
您必须使用没有协议的 ldap_connect(“ xx.xxxx.xx”,3268),才能在(Microsoft?)AD服务器的子树中进行搜索。