Вы можете создать запрос с этим фильтром здесь:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
и когда вы запускаете его на своем сервере LDAP, если вы получаете результат, ваш пользователь "yourUserName" действительно является членом группы "CN = YourGroup, OU = Users, 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 = Users») в вашем домене. Он не обрабатывает вложенные членства, например Пользователь A является членом группы A, которая является членом группы B - тот факт, что пользователь A действительно является членом группы B, здесь не отражается.
Марк