4 Stimmen

Warum nicht immer (objectClass=*) im LDAP-Suchfilter verwenden?

Ich habe folgenden Filter für die Suche nach Benutzern im Active Directory erstellt:

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

Es ist möglich, einen qualifizierteren Filter zu erstellen:

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

Die Frage ist warum?

Welche Vorteile hat die Verwendung der spezifizierten Klasse person?

Ist es möglich, dass im selben Verzeichnis ein Objekt vorhanden ist, bei dem objectClass nicht person ist, aber folgendes zutrifft (|(sAMAccountName=u)(userPrincipalName=u))?

Warum nicht immer (objectClass=*) im LDAP Suchfilter verwenden?

7voto

Terry Gardner Punkte 10659

(objectClass=*) ist ein vorhandener Filter, der verwendet wird, um Objekte herauszufiltern, die keinen bevölkerten objectClass haben ... was keines ist, da alle LDAP-Objekte mindestens eine strukturelle objectClass haben, daher ist das Filterelement im ersten Filter unnötig und kann die Suche sogar verlangsamen, abhängig von der Serverkonfiguration.

Der erste Filter in Ihrer Frage könnte dazu führen, dass der Server Vergleiche mit Matching-Regeln durchführt, die unnötig sind. Der zweite Filter ist aus Leistungssicht ein besserer Filter, vorausgesetzt, dass auf dem Server ein Index für die objectClass-Gleichheit erstellt wurde.

1voto

geoffc Punkte 3954

Es handelt sich wahrscheinlich um ein Überbleibsel aus generischen LDAP-Diensten, bei denen grundsätzlich jedes Objekt das gleiche Attribut mit dem gleichen Wert teilen könnte, aber unterschiedlichen Objektklassen angehören könnte.

Allerdings hat Active Directory eine Beschränkung, dass sAMAccountName innerhalb der Domäne eindeutig sein muss, unabhängig von allen Objektklassen. Und nur 4 Objektklassen sollten das Attribut haben? (Benutzer, Gruppen, Drucker und Workstations denke ich).

Daher könnten Sie wahrscheinlich einfach nach (|(sAMAccountName=u)(userPrincipalName=u)) abfragen

ohne den objectclass-Filter überhaupt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X