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のものであり、各ユーザーはグループのuniqueMemberです。

何かが足りないのですか、それともサーバーが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 に答える