ldap_search返回空数组

时间:2019-01-25 14:28:00

标签: php search ldap

我放弃:(

在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扩展已启动并正在运行。

1 个答案:

答案 0 :(得分:0)

最后找到了罪魁祸首:在PHP代码中,我以“ ldap://xx.xxxx.xx” 的形式提供了服务器地址,我猜这是错误的方式。我没有在unix shell命令中使用协议。

您必须使用没有协议的 ldap_connect(“ xx.xxxx.xx”,3268),才能在(Microsoft?)AD服务器的子树中进行搜索。