Поделиться через


Авторизация доступа к операциям службы

В этом образце показано, как применять <serviceAuthorization> element, чтобы использовать атрибут PrincipalPermissionAttribute для авторизации доступа к операциям служб. Этот образец основан на примере Образец для начала работы. Служба и клиент настроены с помощью элемента wsHttpBinding Element. Для атрибута mode элемента Security element задано значение Message, а для clientCredentialType задано значение Windows. К каждому методу службы применяется PrincipalPermissionAttribute и используется для ограничения доступа к каждой операции. Чтобы получить доступ к каждой операции, вызывающий объект должен быть администратором Windows.

В этом образце клиентом является консольное приложение (EXE), а служба размещается в службах IIS.

ms752243.note(ru-ru,VS.100).gifПримечание
Процедура установки и инструкции по построению для данного образца приведены в конце этого раздела.

Файл конфигурации службы использует <serviceAuthorization> element для присвоения значения атрибуту principalPermissionMode .

<behaviors>
  <serviceBehaviors>
    <behavior>
      ...
      <!-- The serviceAuthorization behavior sets the           principalPermissionMode to UseWindowsGroups.
           This puts a WindowsPrincipal on the current thread when a            service is invoked. -->
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Настройка principalPermissionMode как UseWindowsGroups позволяет использовать PrincipalPermissionAttribute на основе имен групп Windows.

PrincipalPermissionAttribute применяется к каждой операции, чтобы вызывающий объект входил в группу администраторов Windows, как показано в следующем образце кода.

[PrincipalPermission(SecurityAction.Demand, 
                             Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
    double result = n1 + n2;
    return result;
}

При выполнении образца запросы и ответы операций отображаются в окне консоли клиента. Клиент успешно связывается с каждой операцией, если он работает в учетной записи, входящей в группу «Администраторы». В противном случае доступ запрещен. Чтобы поэкспериментировать со сбоем авторизации, запустите клиент в учетной записи, не входящей в группу "Администраторы". Чтобы закрыть клиент, нажмите клавишу ВВОД в окне консоли.

Службу можно уведомить о сбоях авторизации, реализовав IErrorHandler. Сведения о реализации IErrorHandler см. в разделе Повышение управляемости обработки ошибок и формирования сообщений об ошибках.

Настройка, построение и выполнение образца

  1. Убедитесь, что выполнены процедуры, описанные в разделе Процедура однократной настройки образцов Windows Communication Foundation.

  2. Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Построение образцов Windows Communication Foundation.

  3. Чтобы запустить образец на одном или нескольких компьютерах, следуйте инструкциям в разделе Running the Windows Communication Foundation Samples.