Comment obtenir des groupes d’utilisateurs AD pour des utilisateurs dans Asp.Net?

Je dois pouvoir obtenir une liste des groupes dans lesquels se trouve un utilisateur, mais je dois avoir une / plusieurs / toutes les propriétés suivantes visibles:

  • nom distingué
  • prénom
  • cn
  • samaccountname

Ce que j’ai maintenant renvoie une sorte de nom, mais pas l’un des noms précédents (les noms semblent proches, mais ne correspondent pas tous correctement. C’est ce que j’utilise:

ArrayList groups = new ArrayList(); foreach (System.Security.Principal.IdentityReference group in System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups) groups.Add(group.Translate(typeof(System.Security.Principal.NTAccount))); 

Comme je l’ai dit plus tôt, cela fonctionne, mais ne me donnera pas les noms propres dont j’ai besoin pour mon programme (ceux spécifiés ci-dessus). J’ai besoin de cela pour pouvoir correspondre à la liste que je reçois en appelant tous les groupes de mon domaine:

 DirectoryEntry dirEnt = new DirectoryEntry("LDAP://my_domain_controller"); DirectorySearcher srch = new DirectorySearcher(dirEnt); srch.Filter = "(objectClass=Group)"; var results = srch.FindAll(); 

Vous ne pouvez pas le faire en une seule étape, car les groupes sont également des entrées AD distinctes avec des propriétés.

Ainsi, lors de la première exécution, vous devez obtenir les noms de groupe dans lesquels se trouve un utilisateur et les renseigner dans une liste.

La deuxième étape consiste à parcourir tous les noms de groupes et à les interroger un par un pour obtenir les propriétés du groupe (comme nom distingué, etc.) et les rassembler dans une sorte de structure.