Ich verwende System.DirectoryServices, um LDAP-Abfragen zu senden.
Es ist schnell; Ich verwende es, um ~100k Benutzer abzufragen und es dauert ~20-30 Sekunden. (auf einer externen Domäne wäre es noch schneller, wenn ich mich auf der lokalen Domäne befände)
So mache ich es:
DirectoryEntry DE = new DirectoryEntry("LDAP://OU=ou_to_search_recursively", Benutzer, Passwort);
using (DirectorySearcher DSE = new DirectorySearcher(DE))
{
DSE.PageSize = 1000;
// nur Benutzer abrufen
DSE.Filter = "(&(objectClass=user)(objectCategory=person))";
// rekursiv suchen
DSE.SearchScope = SearchScope.Subtree;
// die gewünschten Eigenschaften laden
DSE.PropertiesToLoad.Clear();
DSE.PropertiesToLoad.Add("distinguishedName");
DSE.PropertiesToLoad.Add("cn");
DSE.PropertiesToLoad.Add("anderes_Attribut_das_Sie_möglicherweise_wollen");
foreach (SearchResult u in DSE.FindAll())
{
// überprüfen, ob Eigenschaft vorhanden ist
if (u.Properties.Contains("distinguishedName")) {
// Eigenschaft zugreifen:
string dn = u.Properties["distinguishedName"][0].ToString();
}
//...
}
}
Ich hoffe, es hat geholfen.