3

Active Directory で検索ユーザー用に次のフィルターを作成しました。

(&(objectClass=*)(|(sAMAccountName=u)(userPrincipalName=u)) 

より修飾されたフィルターを作成することが可能です:

(&(objectClass=person)(|(sAMAccountName=u)(userPrincipalName=u)) 

問題はなぜですか?

指定されたクラスを使用する利点は何personですか?

同じディレクトリにオブジェクトが含まれている可能性objectClasspersonあります(|(sAMAccountName=u)(userPrincipalName=u))か?

(objectClass=*)LDAP 検索フィルターで常に使用しないのはなぜですか?

4

2 に答える 2

6

(objectClass=*)は、入力されていないオブジェクトを除外するために使用される現在のフィルターobjectClassです...これはありません。すべての LDAP オブジェクトには少なくとも 1 つの構造的な objectClass があるため、最初のフィルターのフィルターコンポーネントは不要であり、場合によっては検索が遅くなる可能性さえあります。サーバー構成上。

質問の最初のフィルターにより、サーバーは不要な一致ルールを使用して比較を行う可能性があります。2 番目のフィルターは、サーバー上に objectClass の同等性に対するインデックスが作成されていることを前提として、パフォーマンスの観点から優れたフィルターです。

于 2013-07-01T15:29:54.573 に答える
1

これはおそらく、一般的な LDAP サービスからの引き継ぎであり、原則として、すべてのオブジェクトが同じ値を持つ同じ属性を共有できますが、オブジェクト クラスは異なります。

ただし、Active Directory には、すべてのオブジェクト クラスにわたってドメイン内で sAMAccountName が一意でなければならないという制限があります。そして、4 つのオブジェクト クラスのみが属性を持つ必要がありますか? (ユーザー、グループ、プリンター、ワークステーションだと思います)。

したがって、ほとんどの場合、クエリを実行できます (|(sAMAccountName=u)(userPrincipalName=u))

objectclass フィルターがまったくない場合。

于 2013-07-01T14:32:12.020 に答える