Авторизация доступа к операциям службы
В этом примере показано, как использовать 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
см. в статье "Расширение контроля над обработкой ошибок и отчетами".
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".