属性にネストされたグループ情報がすべて含まれていない可能性のある理由は、次のリンクmemberOf
に示されているように、属性がロードされたときに値が計算されるためです。
この属性には、メンバー属性にユーザーが含まれているグループがリストされていることに注意してください。ネストされた先行オブジェクトの再帰的なリストは含まれていません。たとえば、ユーザーOがグループCのメンバーであり、グループBとグループBがグループAにネストされている場合、ユーザーOのmemberOf属性はグループCとグループBをリストしますが、グループAはリストしません。
この属性は保存されません—計算された被リンク属性です。
したがって、これをサポートするために、LDAPクエリが属性を返すたびに、DCはすべてのネストされたグループをロードするように強制されますmemberOf
。これは、多くの余分な作業になる可能性があります。
使用しているテクノロジーによっては、すべてのグループをロードしてすべてを一覧表示するよりも、グループのメンバーシップを確認するためのより良い方法がほぼ確実にあります。たとえば、 ADSIには、ユーザーがグループのメンバーであるかどうかを確認するための事前に作成された関数があります。
ただし、純粋なLDAPソリューションの場合は、この回答LDAP_MATCHING_RULE_IN_CHAIN
に示されているように(ユーザーのDNがあると仮定して)、たとえば、を使用できます。
(member:1.2.840.113556.1.4.1941:=CN=Administrator,OU=Users,DC=fabrikam,DC=com)
これにより、Administratorがメンバーになっているすべてのグループが取得されます。ただし、このクエリは非常に遅くなる可能性があることに注意してください。パフォーマンスを高速化するには、結果をページングするか、検索ベースをチェックしたいグループのみに制限することを検討してください。