まず、Microsoft Active Directory では、1 回の検索でこれを行うことは不可能です。これは、AD が LDAP と完全に互換性がないためです。
LDAP 準拠のサーバーextensible-match
は、必要なフィルタリングを提供するフィルターをサポートしています。RFC4511から:
dnAttributes フィールドが TRUE に設定されている場合、一致はエントリの識別名のすべての AttributeValueAssertions に対して追加で適用され、フィルタ項目が TRUE と評価される識別名に少なくとも 1 つの属性またはサブタイプがある場合、TRUE と評価されます。 . dnAttributes フィールドは、一般的な一致ルール (単語の一致など) の複数のバージョンの必要性を軽減するために存在します。1 つはエントリに適用され、もう 1 つはエントリと DN 属性にも適用されます。
extensible-matchフィルタ手法は LDAP 準拠のサーバーでのみ機能することに注意してください。AD はそのうちの 1 つではありません。
たとえば、次のエントリをサーバーに追加しました。
dn: ou=legacy groups,o=training
objectClass: top
objectClass: organizationalUnit
ou: legacy groups
dn: ou=common groups,o=training
objectClass: top
objectClass: organizationalUnit
ou: common groups
dn: ou=groups,o=training
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: cn=a,ou=common groups,o=training
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember: uid=user.0,ou=people,o=training
cn: a
dn: cn=b,ou=groups,o=training
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember: uid=user.0,ou=people,o=training
cn: b
dn: cn=c,ou=legacy groups,o=training
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember: uid=user.0,ou=people,o=training
cn: c
上記のエントリが追加された後、次の検索でフィルターを調べます。
ldapsearch --propertiesFilePath ds-setup/11389/ldap-connection.properties \
--baseDN o=training \
--searchScope sub '(|(ou:dn:=groups)(ou:dn:=common groups))' 1.1
dn: ou=common groups,o=training
dn: cn=a,ou=common groups,o=training
dn: ou=groups,o=training
dn: cn=b,ou=groups,o=training
ou=common groups
、ou=groups
、およびその部下は返されますが、 および の部下は返されない
ことに注意してくださいou=legacy groups
。
この例では、ldapsearch コマンド ライン ツールの最新の構文を使用しています。ユーザーが従来の OpenLDAP バージョンの ldapsearch を使用している場合、コマンド ライン ツールのパラメーターは多少異なりますが、問題にはなりません。重要なのはフィルターです。