Пример использования режима безопасности служб WCF в режиме транспорта (net.tcp) и использования идентификации клиента WCF на основе идентификации Windows.
Демонстрирует
Данный пример не использует алгоритмы ГОСТ в явном виде и создан для удобства понимания примера Пример защиты служб в режиме транспорта (net.tcp) и использовании идентификации на основе сертификатов. .
Исходные тексты
Исходные тексты примера находятся в файле WCF.zip в подкаталоге NetTcp и состоят из клиента (каталог Client), исполняемого модуля службы (каталог SelfHost), модуля службы IIS (каталог IIS). Подробнее см. Сборка, запуск и местоположение примеров WCF.
Как собрать пример
Сборка приммера не требует дополнительных действий, по сравнению с инструкциями по сборке к данной группе примеров, указанных в Сборка, запуск и местоположение примеров WCF.
Как запустить пример
Перед запуском примера необходимо убедиться, что клиент проходит аутентификацию Windows на компьютере на котором будет запущен сервис.
Запуск примера с использованием самостоятельного приложения службы (SelfHost) соответстует инструкции Сборка, запуск и местоположение примеров WCF.
Перед запуском примера с использованием службы IIS следует создать виртуальный каталог ServiceModelSamplesNetTcp как это описано в Сборка, запуск и местоположение примеров WCF. Далее необхоимо убедиться в правильности настройки net.tcp как это описано в Сборка, запуск и местоположение примеров WCF.
Как модифицировать базовый пример до данного
Для модификации клиента, необходимо
Модифицировать привязку: изменив секцию configuration\system.serviceModel\bindings\ wsHttpBinding на netTcpBinding, заменив режим безопасности на транспорт и установив идентификацию Windows.
Copy Code <netTcpBinding> <binding name="NewBinding1"> <!-- Задаем аудентификацию через Transport --> <security mode="Transport"> <transport clientCredentialType="Windows"/> </security> </binding> </netTcpBinding>
Изменить endpoint для указания на модифицированную привязку, изменив тег configuration\system.serviceModel\client\endpoint
Copy Code <!-- <endpoint address="net.tcp://localhost/ServiceModelSamplesNetTcp/CalculatorService.svc" binding="netTcpBinding" bindingConfiguration="NewBinding1" contract="ICalculator" name="WSHttpBinding_ICalculator" behaviorConfiguration="NewBehavior"/> --> <endpoint address="net.tcp://localhost:8000/ServiceModelSamplesNetTcp/CalculatorService.svc" binding="netTcpBinding" bindingConfiguration="NewBinding1" contract="ICalculator" name="WSHttpBinding_ICalculator" behaviorConfiguration="NewBehavior"/>
Для модификации самостоятельного приложения службы, необходимо внести следующие изменения в код SelfHost.cs
Изменить тип класса привязки
C# Copy Code NetTcpBinding b = new NetTcpBinding();
Установить режим безопасности у данной привязки в транспорт
C# Copy Code b.Security.Mode = SecurityMode.Transport;
Установить режим идентификации Windows у данной привязки
C# Copy Code b.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
Удалить доступ к метаданным удалив код:
C# Copy Code smb.HttpGetEnabled = true;
Для модификации службы IIS необходимо внести следующие изменения в конфигурационный файл web.config
Изменить привязку с wsHttpBinding в netTcpBinding в теге configuration\system.serviceModel\bindings установить режим защиты служб в транспортный и установить Windows аутентификацию клиента
Copy Code <netTcpBinding> <binding name="NewBinding1"> <security mode="Transport"> <transport clientCredentialType="Windows"/> </security> </binding> </netTcpBinding>
Изменить адрес привязки в теге configuration/system.serviceModel/services/service/endpoint:
Copy Code <endpoint address="" binding="netTcpBinding" bindingConfiguration="NewBinding1" contract="CryptoPro.Sharpei.WCF.Samples.ICalculator" />
Для возможности запуска всех примеров данной группы (WCF) независимо, по сравнению с базовым примером изменен адрес привязки как в клиента, так и в серверах.
Изменения при переходе от ключей и сертификатов Rsa к ГОСТ
При переходе от ключей Rsa на ГОСТ данный пример не потребует изменений ни в тексте программ ни в конфигурационных файлах.