Wie führt man eine Abfrage eines LDAP-Speichers nach sAMAccountName und Domain durch? Wie heißt die Eigenschaft "Domäne" in Active Directory oder LDAP-Begriffen?
Dies ist, was ich bisher für den Filter habe. Ich möchte in der Lage sein, die Domäne hinzuzufügen:
(&(objectCategory=Person)(sAMAccountName=BTYNDALL))
"Domäne" ist keine Eigenschaft eines LDAP-Objekts. Es handelt sich eher um den Namen der Datenbank, in der das Objekt gespeichert ist.
Sie müssen sich also mit der richtigen Datenbank verbinden (in LDAP-Begriffen: "an den Domänen-/Verzeichnis-Server binden"), um eine Suche in dieser Datenbank durchführen zu können.
Sobald Sie die Verbindung erfolgreich hergestellt haben, ist Ihre Abfrage in ihrer aktuellen Form alles, was Sie brauchen.
Übrigens: Es war eine gute Entscheidung, "ObjectCategory=Person"
gegenüber "ObjectClass=user"
zu wählen. Im AD ist erstere eine "indizierte Eigenschaft" mit hervorragender Leistung, letztere ist nicht indiziert und ein wenig langsamer.
Sie müssen Ihre Suche in der Domäne durchführen:
http://msdn.microsoft.com/en-us/library/ms677934(VS.85).aspx
Sie sollten sich also an eine Domäne binden, um innerhalb dieser Domäne zu suchen.
Wenn Sie .NET verwenden, benutzen Sie die Klasse DirectorySearcher. Sie können Ihre Domäne als String an den Konstruktor übergeben.
// if you domain is domain.com...
string username = "user"
string domain = "LDAP://DC=domain,DC=com";
DirectorySearcher search = new DirectorySearcher(domain);
search.Filter = "(SAMAccountName=" + username + ")";