当groupOfUniqueNames用于定义组时,如何查找用户所属的所有LDAP组

时间:2012-10-31 14:43:15

标签: php ldap

当我连接到LDAP服务器并检索用户时,我得到了正确的用户记录,但我没有看到任何memberOf,isMemberOf或任何其他类似属性告诉我他们所在的组:

$query = "(&(uid={$username})(objectClass=person))";
$result = ldap_search($ldapconnection, $context, $query);
$user = ldap_get_entries($ldapconnection, $result);

但是,如果我检索LDAP组,那么我可以看到包含所有正确用户的用户列表:

$query = "(&({cn=".$groupname.")(objectClass=groupOfUniqueNames))";
$result = ldap_search($ldapconnection, $context, $query);
$group = ldap_get_entries($ldapconnection, $result); // Users in array attribute

这些组是动态groupOfUniqueNames组,每个用户都是该组的uniqueMember。

我是否遗漏了某些内容,或服务器未配置为显示memberOf(MS AD)?有没有办法获得特定用户的成员资格而没有遍历每个组?

1 个答案:

答案 0 :(得分:2)

我不确定为什么你没有从查询中获取memberOf属性,但你应该能够通过以下方式检索用户的组成员资格:

$query = "(&(objectClass=groupOfUniqueNames)(uniqueMember=" . $username . "))";

默认情况下看起来uniqueMember没有编入索引(http://msdn.microsoft.com/en-us/library/windows/desktop/ms680520(v=vs.85).aspx),所以如果你有访问权限要做到这一点,并遇到性能问题,可能值得索引它。