Fast Tricks: Obtener Grupos de Usuario AD DirectoryServices 3.5
Siguiendo con esta serie de articulos sobre tips rápidos para solucionar de forma optima y rápida casos concretos, os dejo un par de lineas rápidas para encontrar de forma óptima y recursiva todos los posibles grupos y subGrupos de un Usuario de Directorio Activo, con DirectoryServices 3.5.
public static List<string> GetGruposUsuarioActiveDirectory(string Usuario)
{
List<string> roles = new List<string>();
string nombreDominio = "MyDomain";
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, nombreDominio))
{
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(ctx, Usuario);
if (userPrincipal != null)
{
foreach (Principal p in userPrincipal.GetGroups())
{
roles.Add(p.Name);
} userPrincipal.Dispose();
}
}
return roles;
}
Edit: La recursividad como comentaba en un comentario más abajo, podemos obtenerla simplemente llamando a esta función de forma recursiva (valga la redundancia), o simplemente, en vez de utilizar el método GetGroups, se utilizará GetAuthorizationGroups