From 52cac4758e4ea5be04e5f900f5894ec6c12978c1 Mon Sep 17 00:00:00 2001 From: tekh Date: Tue, 5 Aug 2025 16:46:36 +0200 Subject: [PATCH] Update src/DigitalData.ActiveDirectory/README.md --- src/DigitalData.ActiveDirectory/README.md | 39 +++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/DigitalData.ActiveDirectory/README.md b/src/DigitalData.ActiveDirectory/README.md index ae1adc5..2f15cc0 100644 --- a/src/DigitalData.ActiveDirectory/README.md +++ b/src/DigitalData.ActiveDirectory/README.md @@ -1,3 +1,38 @@ -# DigitalData.ActiveDirectory +# DirectorySearchQuery -**DigitalData.ActiveDirectory** is a lightweight and extensible .NET library designed to interact with Microsoft Active Directory. It provides essential features such as user information lookup, and group membership checks. \ No newline at end of file +**`DirectorySearchQuery`** ist ein Abfrageobjekt, das zum Durchführen von Suchvorgängen in Active Directory (AD) verwendet wird. Dieses Objekt ist mit der integrierten **`DirectorySearcher`**-Klasse von .NET verknüpft (gemappt) und stellt die erforderlichen Parameter zum Konfigurieren der Suche bereit. + +## Eigenschaften + +Die folgenden Eigenschaften werden verwendet, um Ihre AD-Abfrage anzupassen: + +* **`Filter`** (`string`): Dies ist die LDAP-Filterzeichenfolge, die für die Suche verwendet wird. Beispielsweise sucht `(objectClass=user)` nach allen Benutzerobjekten, während `(&(objectClass=user)(cn=Test*))` nach Benutzern sucht, deren Name mit „Test” beginnt. Weitere Informationen zur Verwendung von Filtern finden Sie in der [LDAP-Filtersyntaxdokumentation von Microsoft](https://learn.microsoft.com/en-us/windows/win32/adsi/search-filter-syntax). +* **`Scope`** (`SearchScope`): Gibt an, auf welcher Ebene die Suche durchgeführt werden soll. Es gibt drei verschiedene Werte: +* **`Base`**: Sucht nur nach dem Startobjekt der Suche. +* **`OneLevel`**: Sucht nur nach Objekten, die sich direkt unter dem Startobjekt befinden. + * **`Subtree`** (Standard): Durchsucht den gesamten Unterbaum einschließlich des Startobjekts. +* **`SizeLimit`** (`int`): Gibt die maximale Anzahl von Objekten an, die als Ergebnis einer Suche zurückgegeben werden sollen. Der Standardwert ist 5000. Dieser Wert ist wichtig für die Leistungsoptimierung bei der Arbeit mit großen Datensätzen. +* **`Property`** (`string[]`): Eine Liste der Attribute, die in den Suchergebnissen zurückgegeben werden sollen. Beispielsweise gibt `new string[] { „cn“, ‚sAMAccountName‘, „mail“ }` nur die angegebenen Attribute zurück. Durch die Auswahl nur der benötigten Attribute werden der Netzwerkverkehr und der Speicherverbrauch reduziert und die Leistung verbessert. + +* **`SearchRoot`** (`Root`): Gibt den Active Directory-Pfad an, an dem die Suche beginnen soll. Dies entspricht der Eigenschaft **`SearchRoot`** des Objekts **`DirectorySearcher`**. Optional können Benutzername und Passwort als spezielle Anmeldedaten angegeben werden. + +## Anwendungsbeispiel + +Das folgende Beispiel zeigt, wie ein `DirectorySearchQuery`-Objekt erstellt und dem **`DirectorySearcher`**-Objekt zugeordnet wird: + +```csharp +// Beispiel für die Erstellung einer DirectorySearchQuery +var query = new DirectorySearchQuery( + Filter: „(&(objectClass=user)(sAMAccountName=john.doe))“, + Scope: SearchScope. Subtree, + Property: new[] { „cn“, ‚mail‘, „description“ }) + +{ + SearchRoot = new DirectorySearchQuery.Root(„LDAP://OU=Users,DC=example,DC=com“) +}; + +// Diese Abfrage wird über einen Mapper in ein DirectorySearcher-Objekt umgewandelt +using DirectorySearcher searcher = _mapper.Map(query); + +// Das searcher-Objekt kann nun für die Suche in Active Directory verwendet werden +var searchResult = searcher.FindAll(); \ No newline at end of file