2010-06-11 3 views
11

Was ist der beste Weg, wenn ein Benutzer auf bestimmte AD-Benutzergruppe gehört, zu bestimmen, ohne C# müssen aufzählen durch die Gruppen des alle Benutzer. Kann dies mit einer einzigen LDAP-Abfrage oder Suche durchgeführt werden?fest, ob ein Benutzer auf eine bestimmte AD-Gruppe gehört mit .Net

+0

möglich Duplikat [Siehe, wenn der Benutzer Teil der Active Directory-Gruppe in C# + Asp.net ist] (http://stackoverflow.com/questions/2188954/see-if-user-is-part-of-active- Verzeichnis-group-in-c-asp-net) –

+0

möglich Duplikat von [Wie LDAP-Abfrage zu schreiben, zu testen, ob Benutzer Mitglied einer Gruppe ist?] (http://stackoverflow.com/questions/1032351/how-to- write-ldap-Abfrage-to-Test-if-Benutzer-is-Mitglied-of-a-Gruppe) –

Antwort

30

Wenn Sie den aktuellen Benutzer werden überprüft und Sie kennen den Namen der Gruppe, die Sie möchten, können Sie sollte nicht durch alle Gruppen aufzählen müssen. Hier ist Beispielcode in 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 

Ähnlich ist es in 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); 
} 

Weitere Beispiele in der WindowsIdentity documentation gefunden werden kann, wenn Sie es zwicken eines anderen Benutzers zu Mitgliedschaft oder was auch immer zu überprüfen.

+2

Dies ist für mich enorm hilfreich war. Wenn Sie die Mitgliedschaft eines anderen Benutzers überprüfen müssen, tun Sie dies einfach: var userPrincipal = new WindowsPrincipal (new WindowsIdentity (username)); –

+1

Dies funktioniert, aber Sie erhalten keine Informationen für alle Gruppen, nur einige von ihnen. Um eine vollständige Liste der Gruppen zu erhalten, die Benutzer Mitglied ist, überprüfen Sie diese Antwort: (http://stackoverflow.com/questions/5252108/query-from-ldap-for-user-groups) – Roboblob

+0

Interessant. Danke, @Roboblob! – ewall

Verwandte Themen