Como obtener los roles a los que pertenece un usuario: revisited

Hace ya un montón de tiempo (en septiembre de 2004), escribí un post, creo que interesante, sobre cómo obtener los roles a los que pertenecía un usuario de Windows.


El caso es que entonces la única manera de conseguirlo era mediante reflexión saltarse las normas de acceso a miembros para llamar a un método interno de la clase WindowsIdentity que devolvía esa información. El caso es que desde entonces no lo había vuelto a revisar (ni falta que me hizo), pero hoy uno de los alumnos de nuestro curso 70-536 de fundamentos de desarrollo en .NET para certificación, me ha hecho notar que en -NEt 2.0 y superiores ya no funciona, y además me ha sugerido la forma de hacerlo con las nuevas versiones (muchas gracias Miguel Ángel, vero que el curso te está cundiendo mucho, jeje), que sería así:

        private static string[] ListaDeRolesNET2(WindowsIdentity wId)
        {
        List<string> roles = new List<string>();
        
        foreach (IdentityReference idGrupo in wId.Groups)
        roles.Add(idGrupo.Translate(typeof(NTAccount)).Value);
        
        return roles.ToArray();
        }

Ahora está plenamente soportado por la plataforma, ofreciéndose una colección Groups que permite obtener los roles/grupos a los que pertenece un usuario en el equipo local o en un Directorio Activo.


Muy interesante. Espero que os sirva.

Sin categoría

One thought on “Como obtener los roles a los que pertenece un usuario: revisited

  1. Que tal amigo, sabes tengo una duda me gustaria saber si has podido obtener que usuario es el que ingreso al sistema sesion windows el cual existe en el directorio activo, asi como obtener el grupo al cual pertenece el usuario. Lo eh intentado en .NET 2.0 con WindowsIdentity y WindowsPrincipal pero obtengo esto:
    Nombre del Equipo/ASPNET
    Yo desearia saber por ejemplo como cuestionar en cuanto al usuario que esta dentro de un dominio y a que grupo pertenece por ejemplo:
    Verificar a que grupo pertenece el usuario dentro de active directory

    si pudieras darme una idea de como hacerlo
    fgo_084@hotmail.com
    gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *