Windows® Identity Foundation (WIF) обеспечивает простую интеграцию с Служба WCF (Windows Communication Foundation). Она позволяет службе WCF использовать такие возможности WIF, как новая модель утверждений, поддержка дополнительных типов маркеров безопасности (SAML 2.0) и обработка маркеров. В данной теме описывается выполнение этих операций.
Включение Windows Identity Foundation в службе WCF с резидентным размещением
- В Visual Studio добавьте ссылку на сборку
WIF(
Microsoft.IdentityModel.dll
) в проект службы WCF.
- Добавьте код, который вызывает метод
ConfigureServiceHost и передает в него экземпляр узла
службы, для которого нужно включить WIF. Это необходимо сделать до
вызова метода
ServiceHost.Open()
для этого экземпляра. Этот метод вносит необходимые изменения в параметры экземпляра ServiceHost для интеграции функций WIF с конвейером обработки сообщений WCF.
Примечание. Вызывать ConfigureServiceHost следует только после окончания настройки ServiceHost
. Например, при обновлении сертификата службы вServiceHost.Credentials
после вызова ConfigureServiceHost изменения не будут отражены в SecurityTokenHandler.
В следующем примере кода показано, как это сделать.
Копировать код | |
---|---|
using (ServiceHost host = new ServiceHost(typeof(ClaimsAwareWebService), new Uri("http://localhost:6020/ClaimsAwareWebService"))) { // Настройка WIF в узле службы. // Попытка прочитать файл web.config/app.config и загрузить // параметры из раздела конфигурации <Microsoft.IdentityModel>. FederatedServiceCredentials.ConfigureServiceHost(host); host.Open(); Console.WriteLine(“Service is ready, press ENTER to close ...”); Console.ReadLine(); host.Close() } |
Включение Windows Identity Foundation в службе WCF с размещением в Интернете
Чтобы задать для службы с размещением в Интернете использование WIF, можно внести следующие изменения в конфигурацию.
- Добавьте конфигурацию
<behaviorConfiguration>
(если она еще не существует)
Копировать код <service name="Service" behaviorConfiguration="ClaimsBehavior"> ... </service>
- Разместите ссылку на реакцию на события в
конфигурации
Копировать код <behaviors> <serviceBehaviors> <behavior name="ClaimsBehavior" > <!-- Расширение реакции на события для включения в службе поддержки утверждений --> <federatedServiceHostConfiguration/> </behavior> </serviceBehaviors> </behaviors>
- Определите реакцию на события в виде
расширения
Копировать код <extensions> <behaviorExtensions> <!-- Это расширение реакции на события обеспечивает поддержку утверждений узлом службы --> <add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </behaviorExtensions> </extensions>