Авторизация доступа к операциям службы
В этом образце показано, как применять <serviceAuthorization> element, чтобы использовать атрибут PrincipalPermissionAttribute для авторизации доступа к операциям служб. Этот образец основан на примере Образец для начала работы. Служба и клиент настроены с помощью элемента wsHttpBinding Element. Для атрибута mode элемента Security element задано значение Message, а для clientCredentialType задано значение Windows. К каждому методу службы применяется PrincipalPermissionAttribute и используется для ограничения доступа к каждой операции. Чтобы получить доступ к каждой операции, вызывающий объект должен быть администратором Windows.
В этом образце клиентом является консольное приложение (EXE), а служба размещается в службах IIS.
Примечание |
---|
Процедура установки и инструкции по построению для данного образца приведены в конце этого раздела. |
Файл конфигурации службы использует <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
см. в разделе Повышение управляемости обработки ошибок и формирования сообщений об ошибках.
Настройка, построение и выполнение образца
Убедитесь, что выполнены процедуры, описанные в разделе Процедура однократной настройки образцов Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Построение образцов Windows Communication Foundation.
Чтобы запустить образец на одном или нескольких компьютерах, следуйте инструкциям в разделе Running the Windows Communication Foundation Samples.