Você deve conseguir criar uma consulta com este filtro aqui:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
e quando você executa isso no servidor LDAP, se obtiver um resultado, o usuário "yourUserName" é realmente um membro do grupo "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
Experimente e veja se isso funciona!
Se você usa C # / VB.Net e System.DirectoryServices, esse trecho deve fazer o truque:
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");
}
Palavra de cautela: isso testará apenas associações imediatas de grupos e não será membro do que é chamado de "grupo principal" (geralmente "cn = Usuários") em seu domínio. Ele não lida com associações aninhadas, por exemplo, o Usuário A é membro do Grupo A, que é membro do Grupo B - o fato de que o Usuário A é realmente um membro do Grupo B também não se reflete aqui.
Marc