PHP LDAP返回部分数据

时间:2016-01-28 06:10:39

标签: php active-directory ldap

我通过PHP的ldap_ *函数访问Active Directory服务器。部分任务是根据AD组成员身份确定应用程序权限。对于我的用户,这可以正常工作,对于其他一些用户,“memberOf”字段不是返回数据的一部分。什么会导致此属性丢失?在缺席时我可以做些什么来确定团体成员?

$ds = ldap_connect($ldap['host']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
if ($ds) {
    $r  = ldap_bind($ds, $ldap['user'], $ldap['pass']);
    $sr = ldap_search($ds, $ldap['path'], "samaccountname=".$username, array(), 0, 1000, 5);
    $info = ldap_get_entries($ds, $sr);
}

1 个答案:

答案 0 :(得分:0)

事实证明,通过拉动该组的所有成员并搜索当前用户的结果,我能够解决此问题。我仍然不知道为什么用户拉不了数据。

$ds = ldap_connect($ldap['host']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
if ($ds) {
    $r  = ldap_bind($ds, $ldap['user'], $ldap['pass']);
    $sr = ldap_search($ds, $group, "cn=*", array(), 0, 1000, 5);
    $info = ldap_get_entries($ds, $sr);
}
foreach ($info[0]['member'] as $member) {
    if ($member == $currentUserDistinguishedName) {
        // Do Authorized stuff
        break;
    }
}