2010-06-11 7 views
11

Jaki jest najlepszy sposób określenia, czy użytkownik należy do określonej grupy użytkowników AD przy użyciu C# bez konieczności wyliczenia we wszystkich grupach użytkowników. Czy można to zrobić za pomocą pojedynczego zapytania LDAP lub wyszukiwania?Określić, czy użytkownik należy do określonej grupy AD za pomocą .Net

+0

możliwy duplikat [Zobacz, czy użytkownik należy do grupy Active Directory w języku C# + Asp.net] (http://stackoverflow.com/questions/2188954/see-if-user-is-part-of-active- directory-group-in-c-asp-net) –

+0

możliwy duplikat [Jak napisać zapytanie LDAP w celu sprawdzenia, czy użytkownik jest członkiem grupy?] (http://stackoverflow.com/questions/1032351/how-to- write-ldap-query-to-test-if-user-is-member-of-a-group) –

Odpowiedz

30

Jeśli sprawdzanie bieżącego użytkownika i znasz nazwę grupy chcesz, nie trzeba wymieniać przez wszystkie grupy. Oto przykład kodu w 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 

Podobnie w 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); 
} 

Więcej przykładów można znaleźć w WindowsIdentity documentation, jeśli trzeba dostosować go do sprawdzenia członkostwa inny użytkownik lub cokolwiek.

+2

To było dla mnie niezwykle pomocne. Jeśli chcesz sprawdzić członkostwo innego użytkownika, po prostu wykonaj następujące czynności: var userPrincipal = new WindowsPrincipal (new WindowsIdentity (username)); –

+1

To działa, ale nie otrzymasz informacji o wszystkich grupach, tylko niektórych z nich. Aby uzyskać pełną listę grup, których członkiem jest użytkownik, należy sprawdzić tę odpowiedź: (http://stackoverflow.com/questions/5252108/query-from-ldap-for-user-groups) – Roboblob

+0

Interesujące. Dzięki, @Roboblob! – ewall

Powiązane problemy