Dans mon Active Directory (my.domain), j'ai beaucoup de groupes (UserGrp1, UserGrp2, etc.) qui ont beaucoup d'utilisateurs. Un utilisateur peut exister dans plus d'un groupe. J'ai actuellement du code qui me permet d'utiliser la classe GroupPrincipal pour trouver un groupe, puis de là pour obtenir tous les membres de ce groupe (voir le code ci-dessous). Cependant, ce dont j'ai vraiment besoin, c'est de trouver tous les groupes auxquels appartient un utilisateur. Par exemple, j'ai un utilisateur de domaine nommé Joe Test (sAMAccountName = JOETEST) et j'ai besoin de trouver tous les groupes auxquels il appartient. Quelle est la meilleure façon de procéder?Recherche d'un utilisateur via le GroupPrincipal
Je peux déterminer si un utilisateur appartient à un groupe (comme ci-dessous) si je boucle tous les membres renvoyés par la méthode GetMembers(), mais cela me semble inefficace et je serais surpris s'il n'y avait pas un façon.
using (PrincipalContext ctx = new PrincipalContext(
ContextType.Domain, "my.domain", "DC=my,DC=domain")) {
if (ctx != null) {
using (GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, "UserGrp1")) {
// Get all group members
PrincipalSearchResult<Principal> psr = gp.GetMembers();
foreach (Principal p in psr) {
// other logic
}
}
}
}
Merci d'avance pour toute aide que je reçois à ce sujet.
Merci, Raymund! Je ne peux pas croire que j'ai raté la méthode GetGroups() dans UserPrincipal. Il me regardait droit dans le visage! – Jagd
Lol! Je ne pense pas que cela arrive à tout le monde – Raymund