Question

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

  • nom distingué
  • nom
  • cn
  • samaccountname

Ce que j'ai maintenant renvoie une sorte de nom, mais aucun 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();
Était-ce utile?

La solution

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 utilisation, 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top