Ви маєте змогу створити запит із цим фільтром тут:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
і коли ви запускаєте це на сервері LDAP, якщо ви отримуєте результат, ваш користувач "yourUserName" дійсно є членом групи "CN = YourGroup, OU = Користувачі, DC = YourDomain, DC = com
Спробуйте і подивіться, чи це працює!
Якщо ви використовуєте C # / VB.Net та System.DirectoryServices, цей фрагмент повинен зробити фокус:
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");
}
Слово застереження: це буде лише тестом на членство в найближчих групах, і воно не перевірятиме на приналежність до того, що у вашому домені називається "первинна група" (зазвичай "cn = користувачі"). Він не обробляє вкладені члени, наприклад, Користувач A є членом групи A, яка є членом групи B - той факт, що Користувач A дійсно є членом групи B, також тут не відображається.
Марк