Debería poder crear una consulta con este filtro aquí:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
y cuando ejecuta eso contra su servidor LDAP, si obtiene un resultado, su usuario "yourUserName" es de hecho un miembro del grupo "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
¡Intenta ver si esto funciona!
Si usa C # / VB.Net y System.DirectoryServices, este fragmento debería ser el truco:
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");
}
Advertencia: esto solo probará la membresía inmediata del grupo, y no probará la membresía en lo que se llama el "grupo primario" (generalmente "cn = Usuarios") en su dominio. No maneja membresías anidadas, por ejemplo, el usuario A es miembro del grupo A, que es miembro del grupo B; el hecho de que el usuario A también sea realmente miembro del grupo B tampoco se refleja aquí.
Bagazo