как использовать класс PrincipalPermissionAttribute - PullRequest
1 голос
/ 17 июня 2011

У меня есть веб-сервис, разоблачающий определенные методы.Я хочу ограничить доступ некоторых из этих методов к определенной группе пользователей.При поиске в Интернете я обнаружил, что мне нужен класс 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.

Я знаю, что-то здесь не хватает.Любая помощь приветствуется.

Спасибо,

1 Ответ

1 голос
/ 22 июня 2011

Звучит как проблема аутентификации пользователя. Если вы не знаете, кто является пользователем, вы не сможете узнать разрешения с помощью WindowsPrincipal.

Пожалуйста, убедитесь, что ваш веб-сайт не с использованием олицетворения Asp.Net и что аутентификация форм включена.

IIS -> Веб-сайт -> Аутентификация

Посмотрите на Аутентификация IIS

С уважением,

...