Поделиться через


Проверка клиента

Службы часто публикуют метаданные, чтобы включить автоматическое создание и настройку типов прокси клиента. Если служба не является доверенной, клиентские приложения должны убедиться, что метаданные соответствуют политике клиентского приложения в плане безопасности, транзакций, типа контракта службы и т. д. В следующем образце показано, как создать поведение конечной точки клиента, которое проверяет конечную точку службы на предмет безопасности использования.

Служба предоставляет четыре конечных точки службы. Первая конечная точка использует WSDualHttpBinding, вторая — проверку подлинности NTLM, третья конечная точка включает поток транзакций, а четвертая использует проверку подлинности на основе сертификатов.

Для извлечения метаданных для службы клиент использует класс MetadataResolver. Клиент реализует политику запрещения дуплексных привязок, проверки подлинности NTLM и потока транзакций с помощью поведения проверки. Для каждого импортированного из метаданных службы экземпляра ServiceEndpoint клиентское приложение добавляет в ServiceEndpoint экземпляр поведения конечной точки InternetClientValidatorBehavior, прежде чем пытаться использовать клиент Windows Communication Foundation (WCF) для подключения к конечной точке. Метод Validate этого поведения выполняется до вызова каких-либо операций в службе и реализует политику клиента, создавая исключение InvalidOperationExceptions.

Построение образца

  1. Чтобы построить решение, следуйте инструкциям в разделе Построение образцов Windows Communication Foundation.

Запуск образца на одном компьютере

  1. Откройте командную строку Visual Studio (2010) с правами администратора и запустите файл Setup.bat из папки установки образцов. При этом устанавливаются все сертификаты, необходимые для запуска образца.

  2. Запустите приложение службы из каталога \service\bin\Debug.

  3. Запустите клиентское приложение из каталога \client\bin\Debug. Действия клиента отображаются в консольном приложении клиента.

  4. Если клиенту и службе не удается взаимодействовать, см. раздел Troubleshooting Tips.

  5. После завершения работы образца запустите файл Cleanup.bat, чтобы удалить сертификаты. В других образцах обеспечения безопасности используются те же сертификаты.

Запуск образца на нескольких компьютерах

  1. На сервере запустите командную строку Visual Studio с правами администратора и наберите setup.bat service. При выполнении команды setup.bat с аргументом service создается сертификат службы с полным именем домена компьютера, который экспортируется в файл с именем Service.cer.

  2. Измените App.config на сервере так, чтобы в файле отражалось новое имя сертификата. Для этого необходимо изменить атрибут findValue в элементе <serviceCertificate> of <serviceCredentials> Element на полное имя домена компьютера.

  3. Скопируйте файл Service.cer из каталога службы в клиентский каталог на клиентском компьютере.

  4. На клиенте откройте командную строку Visual Studio 2010 с правами администратора и наберите setup.bat client. При выполнении команды setup.bat с аргументом client создается сертификат клиента с именем Client.com, который экспортируется в файл с именем Client.cer.

  5. В файле client.cs измените значение адреса конечной точки MEX и findValue для задания сертификата сервера по умолчанию таким образом, чтобы они соответствовали новому адресу службы. Для этого замените имя localhost полным именем домена сервера. Выполните перестроение.

  6. Скопируйте файл Client.cer из клиентского каталога в каталог службы на сервере.

  7. На клиентском компьютере откройте командную строку Visual Studio с правами администратора и запустите файл ImportServiceCert.bat. Он импортирует сертификат службы из файла Service.cer в хранилище CurrentUser - TrustedPeople.

  8. На сервере откройте командную строку Visual Studio с правами администратора и запустите файл ImportClientCert.bat. При этом импортируется сертификат клиента из файла Client.cer в хранилище «LocalMachine — TrustedPeople».

  9. На компьютере службы постройте проект службы в Visual Studio и запустите файл service.exe.

  10. На клиентском компьютере запустите файл client.exe.

    1. Если клиенту и службе не удается взаимодействовать, см. раздел Troubleshooting Tips.

Очистка после образца

  • После завершения работы образца запустите в папке образцов файл Cleanup.bat.

    Aa717051.note(ru-ru,VS.100).gifПримечание
    Этот скрипт не удаляет сертификаты службы на клиенте при запуске образца на нескольких компьютерах. Если образцы WCF, в которых использовались сертификаты, запускались на нескольких компьютерах, обязательно удалите сертификаты службы, которые были установлены в хранилище «CurrentUser — TrustedPeople». Для этого воспользуйтесь командой certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>. Пример: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com.

См. также

Основные понятия

Использование метаданных