0

当我连接到 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 组,每个用户都是该组的唯一成员。

我是否遗漏了什么,或者服务器未配置为显示 memberOf (MS AD)?有没有办法在不遍历每个组的情况下获得特定用户的成员资格?

4

1 回答 1

2

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

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

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

于 2012-10-31T15:40:31.337 回答