Mit diesem Filter sollten Sie hier eine Abfrage erstellen können:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
Wenn Sie dies auf Ihrem LDAP-Server ausführen und ein Ergebnis erhalten, ist Ihr Benutzer "yourUserName" tatsächlich Mitglied der Gruppe "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
Versuchen Sie zu sehen, ob dies funktioniert!
Wenn Sie C # / VB.Net und System.DirectoryServices verwenden, sollte dieses Snippet den folgenden Trick ausführen:
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");
DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;
srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberOf=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";
SearchResultCollection res = srch.FindAll();
if(res == null || res.Count <= 0) {
Console.WriteLine("This user is *NOT* member of that group");
} else {
Console.WriteLine("This user is INDEED a member of that group");
}
Achtung: Dies wird nur auf unmittelbare Gruppenmitgliedschaften getestet und nicht auf Mitgliedschaft in der sogenannten "primären Gruppe" (normalerweise "cn = Benutzer") in Ihrer Domain. Verschachtelte Mitgliedschaften werden nicht behandelt, z. B. Benutzer A ist Mitglied der Gruppe A, die Mitglied der Gruppe B ist. Die Tatsache, dass Benutzer A auch wirklich Mitglied der Gruppe B ist, wird hier nicht berücksichtigt.
Marc