Мы действительно застряли здесь, поэтому я решил попросить вас о помощи.
Вчера меня попросили помочь в использовании веб-службы, получил URL-адрес WSDL и учетные данные пользователя для использования.
Я никогда не имел ничего общего с веб-сервисами, но, имея общее представление о них и увидев несколько примеров, я подумал, что это не может быть так уж плохо. Очевидно, я был неправ, потому что я застрял сейчас.
Все вроде бы нормально, прокси-класс (или клиент) сгенерирован, сборка запросов и их отправка тоже подойдут, кроме части аутентификации. Что мы не можем понять, как это сделать.
Использование:
client.ChannelFactory.Credentials.UserName.UserName = "myusername";
client.ChannelFactory.Credentials.UserName.Password = "mypassword";
не похоже на работу. (Когда я проверяю BindingElementCollection, восстановленную клиентом. Endpoint.Binding.CreateBindingElements (), SecurityBindingElement отсутствует)
Я пробовал так много других способов сделать это, но я думаю, что упускаю что-то простое, и отсутствие документации на самом деле тоже не помогает.
Итак, вопрос: как отправить имя пользователя и пароль при звонке в веб-службу с использованием WCF?
Edit:
Просто чтобы уточнить, запрос должен содержать что-то похожее на это:
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-25763165">
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">1DiaGTkOLk/CZhDaEpbkAaKRfGw=</wsse:Password>
<wsse:Nonce>6ApOnLn5Aq9KSH46pzzcZA==</wsse:Nonce>
<wsu:Created>2009-05-13T18:59:23.309Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>