Определите, принадлежит ли пользователь к определенной группе AD, используя .Net

Каков наилучший способ определить, принадлежит ли пользователь к определенной группе пользователей AD, используя С#, без необходимости перечислять все группы пользователей. Можно ли это сделать, используя один запрос или поиск LDAP?

Ответ 1

Если вы проверяете текущего пользователя и знаете имя нужной вам группы, вам не нужно перечислять все группы. Вот пример кода в 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

Аналогично в С#:

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

Дополнительные примеры можно найти в документации WindowsIdentity, если вам нужно настроить его, чтобы проверить другое членство пользователя или что-то еще.