Надежный сеанс по протоколу HTTPS с использованием пользовательской привязки
Пример ReliableSessionOverHttps демонстрирует использование безопасности транспорта SSL с надежными сеансами. Надежные сеансы реализуют протокол WS-ReliableMessaging. Чтобы создать безопасный надежный сеанс, можно объединить протокол WS-Security с надежными сеансами. Но в некоторых случаях может потребоваться использовать безопасность транспорта HTTP с протоколом SSL.
Подробные сведения об образце
Протокол SSL гарантирует защищенность пакетов. Важно отметить, что этот подход отличается от защиты надежных сеансов с помощью протокола WS-SecureConversation.
Чтобы использовать надежные сеансы поверх протокола HTTPS, необходимо создать пользовательскую привязку. Этот пример основан на начале работы , который реализует службу калькулятора. Пользовательская привязка создается с помощью элемента привязки надежного сеанса <и httpsTransport>. Ниже представлена конфигурация пользовательской привязки.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- use base address provided by host -->
<endpoint address=""
binding="customBinding"
bindingConfiguration="reliableSessionOverHttps"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed as http://localhost/servicemodelsamples/service.svc/mex-->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<customBinding>
<binding name="reliableSessionOverHttps">
<reliableSession />
<httpsTransport />
</binding>
</customBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Код программы в примере идентичен службе "Начало работы ". Перед построением и запуском примера необходимо с помощью мастера сертификатов веб-сервера создать и назначить сертификат. Определения конечной точки и привязки в файле конфигурации включают использование пользовательской привязки, как показано в следующем образце файла конфигурации клиента.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<!-- this endpoint has an https: address -->
<endpoint name=""
address="https://localhost/servicemodelsamples/service.svc"
binding="customBinding"
bindingConfiguration="reliableSessionOverHttps"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</client>
<bindings>
<customBinding>
<binding name="reliableSessionOverHttps">
<reliableSession />
<httpsTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>
Указанный адрес использует схему https://
.
Так как сертификат, используемый в этом примере, является тестовый сертификат, созданный с Makecert.exe, при попытке получить доступ к https: адресу, например https://localhost/servicemodelsamples/service.svc
из браузера, появится оповещение системы безопасности. Чтобы клиент Windows Communication Foundation (WCF) работал с тестируемым сертификатом, некоторый дополнительный код был добавлен клиенту для подавления оповещения системы безопасности. При использовании рабочих сертификатов этот код и соответствующие классы не требуются.
// This code is required only for test certificates like those created by Makecert.exe.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");
При выполнении примера запросы и ответы операций отображаются в окне консоли клиента. Чтобы закрыть клиент, нажмите клавишу ВВОД в окне клиента.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Настройка, сборка и выполнение образца
Установите ASP.NET 4.0 с помощью следующей команды.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Убедитесь, что вы выполнили инструкции по установке сертификата сервера службы IIS (IIS).
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".