2010-06-11 73 views
11

¿Cuál es la mejor manera de determinar si un usuario pertenece a un grupo de usuarios de AD particular usando C# sin tener que enumerar todos los grupos de usuarios? ¿Se puede hacer esto usando una única búsqueda LDAP o búsqueda?Determine si un usuario pertenece a un Grupo de AD determinado usando .Net

+0

posible duplicado de [Ver si el usuario es parte del grupo de Active Directory en C# + Asp.net] (http://stackoverflow.com/questions/2188954/see-if-user-is-part-of-active- directory-group-in-c-asp-net) –

+0

posible duplicado de [¿Cómo escribir una consulta LDAP para probar si el usuario es miembro de un grupo?] (http://stackoverflow.com/questions/1032351/how-to- write-ldap-query-to-test-if-user-is-member-of-a-group) –

Respuesta

30

Si está mirando el usuario actual y que conoce el nombre del grupo que desea, no debería ser necesario enumerar a través de todos los grupos. Aquí hay ejemplos de código en VB.NET:

Public Function IsInGroup(ByVal GroupName As String) As Boolean 
    Dim MyIdentity As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent() 
    Dim MyPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(MyIdentity) 
    Return MyPrincipal.IsInRole(GroupName) 
End Function 

mismo modo en C#:

private static bool IsInGroup(string GroupName) 
{ 
    System.Security.Principal.WindowsIdentity MyIdentity = System.Security.Principal.WindowsIdentity.GetCurrent(); 
    System.Security.Principal.WindowsPrincipal MyPrincipal = new System.Security.Principal.WindowsPrincipal(MyIdentity); 
    return MyPrincipal.IsInRole(GroupName); 
} 

Más ejemplos se pueden encontrar en el WindowsIdentity documentation, si es necesario modificarlo para comprobar la pertenencia de un usuario diferente o lo que sea.

+2

Esto fue tremendamente útil para mí. Si necesita verificar la membresía de un usuario diferente simplemente haga esto: var userPrincipal = new WindowsPrincipal (new WindowsIdentity (username)); –

+1

Esto funciona pero no obtendrá información para todos los grupos, solo algunos de ellos. Para obtener una lista completa de los grupos a los que pertenece el usuario, marque esta respuesta: (http://stackoverflow.com/questions/5252108/query-from-ldap-for-user-groups) – Roboblob

+0

Interesante. Gracias, @Roboblob! – ewall

Cuestiones relacionadas