Проверка клиента
Службы часто публикуют метаданные, чтобы включить автоматическое создание и настройку типов прокси клиента. Если служба не является доверенной, клиентские приложения должны убедиться, что метаданные соответствуют политике клиентского приложения в плане безопасности, транзакций, типа контракта службы и т. д. В следующем образце показано, как создать поведение конечной точки клиента, которое проверяет конечную точку службы на предмет безопасности использования.
Служба предоставляет четыре конечных точки службы. Первая конечная точка использует WSDualHttpBinding, вторая - проверку подлинности NTLM, третья конечная точка включает поток транзакций, а четвертая использует проверку подлинности на основе сертификатов.
Для извлечения метаданных для службы клиент использует класс MetadataResolver. Клиент реализует политику запрещения дуплексных привязок, проверки подлинности NTLM и потока транзакций с помощью поведения проверки. Для каждого ServiceEndpoint экземпляра, импортированного из метаданных службы, клиентское приложение добавляет экземпляр InternetClientValidatorBehavior
поведения конечной точки к ServiceEndpoint клиенту Windows Communication Foundation (WCF) перед попыткой использовать клиент Windows Communication Foundation (WCF) для подключения к конечной точке. Метод Validate
этого поведения выполняется до вызова каких-либо операций в службе и реализует политику клиента, создавая исключение InvalidOperationExceptions
.
Сборка образца
- Чтобы создать решение, следуйте инструкциям по созданию примеров Windows Communication Foundation.
Запуск образца на одном компьютере
Откройте командную строку разработчика для Visual Studio с правами администратора и запустите Setup.bat из образца папки установки. При этом устанавливаются все сертификаты, необходимые для выполнения образца.
Запустите приложение службы из каталога \service\bin\Debug.
Запустите клиентское приложение из каталога \client\bin\Debug. Действия клиента отображаются в консольном приложении клиента.
Если клиент и служба не могут взаимодействовать, ознакомьтесь с Советы устранения неполадок для примеров WCF.
После завершения работы образца запустите файл Cleanup.bat, чтобы удалить сертификаты. В других образцах обеспечения безопасности используются те же сертификаты.
Запуск образца на нескольких компьютерах
На сервере в командной строке разработчика для Visual Studio запустите с правами администратора, введите
setup.bat service
. При выполненииsetup.bat
сservice
аргументом создается сертификат службы с полным доменным именем компьютера и экспортируется сертификат службы в файл с именем Service.cer.Измените App.config на сервере так, чтобы в файле отражалось новое имя сертификата. То есть измените
findValue
атрибут в <элементе serviceCertificate> на полное доменное имя компьютера.Скопируйте файл Service.cer из каталога службы в клиентский каталог на клиентском компьютере.
На клиенте откройте командную строку разработчика для Visual Studio с правами администратора и введите
setup.bat client
. При выполненииsetup.bat
client
с аргументом создается сертификат клиента с именем Client.com и экспортируется сертификат клиента в файл с именем Client.cer.В файле client.cs измените значение адреса конечной точки MEX и
findValue
для задания сертификата сервера по умолчанию таким образом, чтобы они соответствовали новому адресу службы. Для этого замените имя localhost полным именем домена сервера. Повторная сборка.Скопируйте файл Client.cer из клиентского каталога в каталог службы на сервере.
На клиенте запустите ImportServiceCert.bat в командной строке разработчика для Visual Studio, открытой с правами администратора. Он импортирует сертификат службы из файла Service.cer в хранилище CurrentUser - TrustedPeople.
На сервере запустите ImportClientCert.bat в командной строке разработчика для Visual Studio, открывшейся с правами администратора. При этом импортируется сертификат клиента из файла Client.cer в хранилище «LocalMachine - TrustedPeople».
На компьютере службы постройте проект службы в Visual Studio и запустите файл service.exe.
На клиентском компьютере запустите файл client.exe.
- Если клиент и служба не могут взаимодействовать, ознакомьтесь с Советы устранения неполадок для примеров WCF.
Очистка после образца
После завершения работы примера запустите в папке примеров файл Cleanup.bat.
Примечание.
Этот скрипт не удаляет сертификаты службы на клиенте при запуске образца на нескольких компьютерах. Если вы выполнили примеры WCF, использующие сертификаты на компьютерах, обязательно снимите сертификаты службы, установленные в хранилище CurrentUser — доверенный Люди. Для этого используйте следующую команду:
certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>. For example: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com
.