Каков наилучший способ определить, принадлежит ли пользователь к определенной группе пользователей AD, используя С#, без необходимости перечислять все группы пользователей. Можно ли это сделать, используя один запрос или поиск LDAP?
Определите, принадлежит ли пользователь к определенной группе AD, используя .Net
Ответ 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, если вам нужно настроить его, чтобы проверить другое членство пользователя или что-то еще.
Ответ 2
Я думаю, вам нужно перечислить группы.
Взгляните на эти два ответа на различные методы:
Посмотрите, является ли пользователь частью группы Active Directory в С# + Asp.net
Как написать запрос LDAP для проверки, является ли пользователь членом группы?