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

9 thoughts on “Fast Tricks: Obtener Grupos de Usuario AD DirectoryServices 3.5

  1. Pero creo que se podría mejorar un pelín añadiendo recursividad.
    A veces el usuario no pertenece directamente al grupo que deseamos comprobar, sino que pertenece a un grupo de personas que tienen ese rol (por ejemplo, el usuario pertenece al grupo Contabilidad y a su vez el grupo Contabilidad pertenece al grupo APP_GESTION_LECTURA que el que realmente tenemos que reconocer como rol de nuestra aplicacion).
    Este tipo de estructuras de AD no es extraño encontrarlas, que la pertenencia no sea directa sino por herencia.

  2. Hola Francisco, la recursividad la podemos obtener 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

Leave a Reply

Your email address will not be published. Required fields are marked *