Настройка аутентификации на сервере осуществляется обычным для IIS-приложений образом – с помощью “Internet Information Services Snap-in”. Для виртуального каталога могут быть установлены следующие методы аутентификации:
Basic – имя и пароль передаются открытым текстом по HTTP.
Integrated – используется текущая учетная запись.
SSL и клиентские сертификаты – по протоколу HTTPS.
Basic по протоколу HTTPS.
Digest – только на контроллерах доменов.
Способ передачи информации о клиенте на сервер зависит от используемого “коннектора”. Коннектором называется компонент, используемый клиентом для передачи запросов на сервер и получения откликов. Коннектор по умолчанию требует указания необходимой информации через свойства.
Для доступа к защищенному ресурсу необходимо запретить анонимный доступ к виртуальному каталогу, в котором находятся файлы серверной части, и установить basic-аутентификацию.
O=CREATEOBJECT("MSSOAP.SOapClient30")
O.MSSoapInit("http://XXX.XXX.XXX.XXX/WS/ws01.wsdl")
O.ConnectorProperty("AuthUser") = "Administrator"
O.ConnectorProperty("AuthPassword") = "password"
O.ConnectorProperty("WinHTTPAuthScheme") = 1
ВНИМАНИЕ!
Здесь явно указано, что подходит только Basic-аутентификация. По умолчанию значение WinHTTPAuthScheme – 0x12, не позволяющее использовать Basic-аутентификацию. Если для виртуального каталога IIS одновременно указаны и Basic-, и Integrated-аутентификация, то при подключении с Basic-аутентификацией могут возникнуть проблемы, если значение WinHTTPAuthScheme допускает Integrated-аутентификацию, и при этом явно указаны имя пользователя и пароль. Суть проблемы будет заключаться в том, что клиент не сможет договориться с сервером об используемой схеме аутентификации и все закончится ошибкой “Access Denied”, несмотря на то, что указаны правильные имя и пароль. Скорее всего, это ошибка в реализации коннектора (эта ошибка наблюдалась и в SOAP Toolkit 2.0).
Если надо использовать защищенное SSL-соединение, необходимо поменять URL, хранящийся в WSDL-файле. Протокол http должен быть заменен на https, иначе подключиться не получится. Кроме того, при подключении с использованием SSL необходимо обратить внимание на имя серверного сертификата для IIS. Этот сертификат задается с помощью средств администрирования IIS и предназначен для подтверждения подлинности Web-сервера (если не задать сертификат для Web-сервера, не получится “включить” поддержку защищенного HTTPS-протокола для виртуальных каталогов).
Если имя серверного сертификата не совпадает с именем Web-сервера, подключение также будет неудачным (Internet Explorer в такой ситуации показывает предупреждение).