У меня есть wsdl из веб-сервиса, я сгенерировал прокси wcf. Нет проблем.
Но я не могу понять, как передать имя пользователя и пароль. Веб-сервис требует базовой аутентификации - только имя пользователя и пароль.
Любая помощь?
Это должно быть покрыто: http://msdn.microsoft.com/en-us/library/ms733775.aspx (См. Раздел «Клиент»)
Настроена ли в файле конфигурации обычная проверка подлинности? Вам нужно передать только учетные данные или вам также нужен защищенный транспорт (HTTPS)?
Сначала необходимо настроить привязку для поддержки базовой проверки подлинности
Настройка привязки HTTP:
<bindings>
<basicHttpBinding>
<binding name="BasicAuth">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
Настройка привязки HTTPS:
<bindings>
<basicHttpBinding>
<binding name="BasicAuthSecured">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
Конечная точка клиента должна использовать определенную конфигурацию, например:
<client>
<endpoint address="..."
name="..."
binding="basicHttpBinding"
bindingConfiguration="BasicAuth"
contract="..." />
</client>
Затем вы должны передать учетные данные прокси:
proxy = new MyServiceClient();
proxy.ClientCredentials.UserName.UserName = "...";
proxy.ClientCredentials.UserName.Password = "...";
Я бы сказал, что это, скорее всего, будет зависеть от того, как веб-служба ожидает, что вы передадите информацию. В конце концов, вы всего лишь потребитель.
При этом обычным явлением для веб-сервисов является передача идентификатора пользователя и пароля в заголовке SOAP.
Вы можете обратиться к этой ссылке для примера реализации этого сценария
Пример сообщения мыла
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AUTHHEADER xmlns="http://tempuri.org/">
<USERNAME>string</USERNAME>
<PASSWORD>string</PASSWORD>
</AUTHHEADER>
</soap:Header>
<soap:Body>
<SENSITIVEDATA xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>