Пример использования режима безопасности служб WCF в режиме транспорта (https) и использования идентификации клиента WCF на основе идентификации Windows.
Демонстрирует
Данный пример не использует алгоритмы ГОСТ в явном виде и создан для удобства понимания примера Пример защиты служб WCF в режиме транспорта (https) и использования идентификации на основе сертификатов. .
Исходные тексты
Исходные тексты примера находятся в файле WCF.zip в подкаталоге Ssl и состоят из клиента (каталог Client), исполняемого модуля службы (каталог SelfHost), и службы IIS (каталог IIS). Подробнее см. Сборка, запуск и местоположение примеров WCF.
Как собрать пример
Сборка примера не требует дополнительных действий, по сравнению с инструкциями по сборке к данной группе примеров, указанных в Сборка, запуск и местоположение примеров WCF.
Как запустить пример
Перед запуском примера необходимо создать секретный ключ и соответствующий ему сертификат службы как это описано в Сборка, запуск и местоположение примеров WCF.
Перед запуском примера с использованием IIS необходимо убедиться, что произведена настройка привязки порта 443 к https на сертификат службы. Cледует создать виртуальный каталог ServiceModelSamplesSsl как это описано в Сборка, запуск и местоположение примеров WCF. После настройки данного виртуального каталога, необходимо убедится, что для данного каталога в IIS включена Проверка подлинности/Проверка подлинности Windows.
Перед запуском примера с использованием самостоятельного приложения службы необходимо настроить соответствие между сертификатом службы и портом 8000 как это описано в Сборка, запуск и местоположение примеров WCF.
В остальном запуск примера соответствует инструкции Сборка, запуск и местоположение примеров WCF.
Как модифицировать базовый пример до данного
Для модификации клиента, необходимо
Установить режим безопасности в режиме транспорта и установить идентификацию Windows: изменив секцию configuration\system.serviceModel\bindings\wsHttpBinding.
Copy Code <wsHttpBinding> <binding name="NewBinding1"> <security mode="Transport"> <transport clientCredentialType="Windows"/> </security> </binding> </wsHttpBinding>
Изменить адрес привязки с http на https, изменив тег configuration\system.serviceModel\client\endpoint как для службы IIS так и для службы в виде программы
Copy Code <!-- <endpoint address="https://localhost/ServiceModelSamplesSsl/CalculatorService.svc" binding="wsHttpBinding" bindingConfiguration="NewBinding1" contract="ICalculator" name="WSHttpBinding_ICalculator" behaviorConfiguration="NewBehavior"/> --> <endpoint address="https://localhost:8000/ServiceModelSamplesSsl/CalculatorService.svc" binding="wsHttpBinding" bindingConfiguration="NewBinding1" contract="ICalculator" name="WSHttpBinding_ICalculator" behaviorConfiguration="NewBehavior"/>
Для модификации службы IIS, необходимо внести следующие изменения в файл конфигурации Web.config
Изменить режим безопасности в теге configuration\system.serviceModel\bindings\wsHttpBinding\binding на Transport и установить Windows аутентификацию клиента
Copy Code <security mode="Transport"> <message clientCredentialType="Windows" /> </security>
Заменить разрешение протокола http на разрешение протоколоа https
Copy Code <serviceMetadata httpsGetEnabled="true" />
Для модификации самостоятельного приложения службы, необходимо внести следующие изменения в код SelfHost.cs
Установить режим безопасности у данной привязки в транспорт
C# Copy Code b.Security.Mode = SecurityMode.Transport;
Установить режим идентификации Windows у данной привязки
C# Copy Code b.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
Разрешаем доступ к метаданным по https и запрещаем http:
C# Copy Code //smb.HttpGetEnabled = true; smb.HttpsGetEnabled = true;
Для возможности запуска всех примров данной группы (WCF) независимо, по сравнению с базовым примером изменен адрес привязки как в клиента, так и в серверах.
Изменения при переходе от ключей и сертификатов Rsa к ГОСТ
При переходе от ключей Rsa на ГОСТ данный пример не потребует изменений ни в тексте программ ни в конфигурационных файлах. Изменения связаны с генерацией секретного ключа сервиса и соответствующего сертификата, установки в нужные хранилища и перепривязки к порту (в случае самостоятельного приложения) или к IIS.