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

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

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

Примечание.

Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.

Файл конфигурации службы использует serviceAuthorization> для задания атрибута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, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".