Mitglieder einer Active Directory-Gruppe rekursiv abrufen, d. H. Untergruppen einschließen
Gegeben eine Gruppe wie folgt in Active Directory:
MainGroup
GroupA
User1
User2
GroupB
User3
User4
Ich kann leicht feststellen, ob Benutzer3 Mitglied der Hauptgruppe oder einer ihrer Untergruppen ist. Der Code lautet wie folgt:
using System;
using System.DirectoryServices;
static class Program {
static void Main() {
DirectoryEntry user = new DirectoryEntry("LDAP://CN=User3,DC=X,DC=y");
string filter = "(memberOf:1.2.840.113556.1.4.1941:=CN=MainGroup,DC=X,DC=y");
DirectorySearcher searcher = new DirectorySearcher(user, filter);
searcher.SearchScope = SearchScope.Subtree;
var r = searcher.FindOne();
bool isMember = (r != null);
}
}
Ich möchte wissen, ob es einen ähnlichen Weg gibt, um alle Benutzer, die Mitglied einer Gruppe oder einer ihrer Untergruppen sind, abzurufen, d. H. Im Beispiel für MainGroup Benutzer1, Benutzer2, Benutzer3 und Benutzer4.
ie naheliegende Möglichkeit, alle Benutzer zu erreichen, besteht darin, jede Untergruppe rekursiv abzufragen, aber ich habe mich gefragt, ob es einen einfacheren Weg gib
Verwenden Sie den gleichen Ansatz mit demmemberOf:1.2.840.113556.1.4.1941:
filter, aber die Verwendung des Domänenstamms anstelle des Benutzers als Suchbasis ist nicht möglich, da die Abfrage zu lange dauert (wahrscheinlich werden alle Gruppenmitgliedschaften rekursiv für alle Benutzer in der Domäne berechnet und geprüft, ob sie Mitglieder der angegebenen Gruppe sind Gruppe)
Welche Methode eignet sich am besten, um alle Mitglieder einer Gruppe, einschließlich ihrer Untergruppen, zu ermitteln?