У меня есть веб-сервис, разоблачающий определенные методы.Я хочу ограничить доступ некоторых из этих методов к определенной группе пользователей.При поиске в Интернете я обнаружил, что мне нужен класс PrincipalPermissionAttribute, но я не получил достаточно хорошего примера.Кто-нибудь может объяснить, как это работает?
Вот так выглядит мой файл web.config:
<System.Web>
<authentication mode="windows">
<authorization>
<allow user="domain\group" />
</authorization>
</System.Web>
Теперь метод веб-сервиса (C # Rest Webservice), который я хочу ограничить, таков:
public void DeleteAction(string resourceId)
{
}
Я сделал две вещи:
1)
[PrincipalPermission(SecurityAction.Demand, role="domain\\group")]
public void DeleteAction(string resourceId)
{
// delete action
}
Я получаю следующее сообщение об ошибке: «запрос основного участника не выполнен» и вторая вещьКак сделать так, чтобы значение роли было динамическим, т. е. выбрав его из файла Web.config вместо жесткого его кодирования.
2)
public void DeleteAction(string resourceId)
{
WindowsIdentity wi = new WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(wi);
if(wp.IsInRole("domain\\group"))
{
// delete action
}
}
В этом подходе он работает нормально, когдаЯ использую консольную программу для размещения веб-сервиса.Когда этот сервис размещен в IIS, я не могу заставить его работать.Пользователь никогда не идентифицируется, т.е. wp.IsInRole ("домен \ группа") возвращает значение false.
Я знаю, что-то здесь не хватает.Любая помощь приветствуется.
Спасибо,