Пользователь член группы на конкретном компьютере?

Я пишу веб-приложение и пытаюсь аутентифицировать пользователей-администраторов. Я надеялся сделать это, имея локальную группу на сервере, в которую я добавляю пользователей домена. У меня есть группа ProductionManagers, в которую я добавляю людей с правами администратора. Другие пользователи имеют доступ только для просмотра.

Что я хочу сделать, так это выполнить поиск по AD (правильно?) на сервере и выяснить, является ли текущий вошедший в систему пользователь членом группы ProductionManagers (которая является группой на сервере, а не группой домена).

Как лучше всего это сделать? Или, может быть, у вас есть предложение по лучшей механике, чем локальная группа, куда я добавляю администраторов?


person AndersLindas    schedule 20.06.2012    source источник


Ответы (1)


При использовании ASP.NET и проверки подлинности с помощью формы

WindowsPrincipal principal = new WindowsPrincipal(new WindowsIdentity("[email protected]"));
if (principal.IsInRole("ProductionManagers"))
{
   // Authenticated
}

При использовании аутентификации ASP.NET и Windows

WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
if (principal.IsInRole("ProductionManagers"))
{
   // Authenticated
}

Если вы используете что-то еще, например Java, PHP, Ruby, для этого вам нужно вызвать .NET API или Win32 API. Вы не можете просто сделать запрос LDAP для получения этой информации. Причина в том, что информация о членстве в группе для локальной группы фактически хранится на локальных компьютерах, а не в этой Active Directory.

Вам нужно вызвать что-то вроде NetLocalGroupGetMembers для получения информации о членстве в группе из локального хранилища.

person Harvey Kwok    schedule 23.06.2012
comment
Спасибо. Я попробую это. К сожалению, я сейчас вне этого проекта. Надеюсь, что скоро снова найду время поработать над этим :) - person AndersLindas; 25.06.2012