Dovresti essere in grado di creare una query con questo filtro qui:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
e quando lo esegui sul tuo server LDAP, se ottieni un risultato, il tuo utente "yourUserName" è effettivamente un membro del gruppo "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
Prova a vedere se funziona!
Se usi C # / VB.Net e System.DirectoryServices, questo snippet dovrebbe fare il trucco:
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");
}
Avvertenza: questo verificherà solo l'appartenenza immediata ai gruppi e non verificherà l'appartenenza a quello che viene chiamato il "gruppo primario" (di solito "cn = Users") nel tuo dominio. Non gestisce le appartenenze nidificate, ad esempio l'utente A è membro del gruppo A che è membro del gruppo B - il fatto che anche l'utente A sia effettivamente un membro del gruppo B non si riflette qui.
Marc