2

all を探しているとGroups、ゴミが多すぎます。

ベースを絞ろうとすると、少なすぎます。

次に例を示します。

CN=A Team,OU=Groups,OU=Americas,DC=example,DC=com
CN=B TEAM,OU=Groups,OU=EMEA,DC=example,DC=com
CN=C Team,OU=Legacy Groups,DC=example,DC=com
CN=D Team,OU=Groups,OU=Bangalore,OU=APAC,DC=example,DC=com
CN=E Team,OU=Common Groups,DC=example,DC=com

filterABDE (C なし) を返すLDAP を探しています。主なロジックは、lastOU=GroupsまたはOU=Common Groups

私の現在の検索は以下を使用しています:

 Search base: CN=Users,DC=citrite,DC=net
 Filter: (objectCategory=Group)
4

1 に答える 1

5

まず、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 groupsou=groups、およびその部下は返されますが、 および の部下は返されない ことに注意してくださいou=legacy groups

この例では、ldapsearch コマンド ライン ツールの最新の構文を使用しています。ユーザーが従来の OpenLDAP バージョンの ldapsearch を使用している場合、コマンド ライン ツールのパラメーターは多少異なりますが、問題にはなりません。重要なのはフィルターです。

于 2012-04-06T09:54:07.453 に答える