Нужен «клиент SOAP с аутентификацией WSSE» ... Соответствует ли Visual Studio этой потребности? - PullRequest
3 голосов
/ 28 февраля 2011

Веб-служба, к которой мне нужно подключиться, имеет вышеуказанное требование. Я могу использовать этот веб-сервис в VS 2008, но не могу использовать его, потому что я не знаю, как проходить аутентификацию. Мне нужно указать учетные данные, однако не существует метода "заголовка". Я пробовал что-то вроде следующего:

UltraDNSWebReference.UltraWebServiceService clientProxy = 
    new UltraDNSWebReference.UltraWebServiceService();

clientProxy.Credentials = new System.Net.NetworkCredential(
    "MyUserName", "MYPassword");

но я все еще получаю ошибку аутентификации. Я могу успешно подключиться, используя платформу тестирования SOAPUI, поэтому я знаю, что это неверные учетные данные или заблокированный IP-адрес.

Этот API-интерфейс WebService гласит:

Neustar Ultra Services API аутентифицирует пользователя и запрашивает маркер WSSE UserName в SOAP заголовок.

Могу ли я использовать этот веб-сервис в Visual Studio ???

Я пытался добавить ссылку на сервис. Я могу успешно использовать WSDL и создать объект, но не знаю, как обеспечить аутентификацию. Например, я пробовал следующее:

//Create client object  
  ServiceReference1.UltraDNSClient client = new ServiceReference1.UltraDNSClient();
  client.ClientCredentials.UserName.UserName = "myUserName";
  client.ClientCredentials.UserName.Password = "myPassword";

Итак, выше у меня есть мой клиентский объект, и у этого объекта есть доступ ко всем методам в API. Тем не менее, я не могу использовать какие-либо методы, потому что я не прошел проверку подлинности. API не предоставляет какой-либо метод типа header (). Например, для другого веб-сервиса, который я использую (и да, он использовал Add Web Reference, но концепция осталась прежней):

//Use the Web Reference to create the header object
StockLogoWebService.Header headerObject = new StockLogoWebService.Header();

//Assign the username (Username is all Xignite requires for authentication)
headerObject.Username = "janedoe@yahoo.com";

//Assign this header to the proxy object
xLogogsTest.HeaderValue = headerObject;

//Use any exposed methods
xLogosTest.anyMethod()

Выше я использовал метод header (), чтобы указать свои учетные данные. Если WSDL не предоставляет метод заголовка и просто заявляет, что учетные данные должны быть указаны в заголовке SOAP, как это сделать в Visual Studio?

WSDL можно найти по адресу:

http://ultra -api.ultradns.com: 8008 / UltraDNS_WS * 1026 WSDL *

1 Ответ

0 голосов
/ 10 сентября 2015

Вы можете добавить заголовки безопасности WSSE к конечной точке службы в конфигурации web / app:

 <system.serviceModel>
    <bindings>
        <customBinding>
          <! -- your binding details -->
        </customBinding>
    </bindings>
    <client>
      <endpoint <your endpoint details>>
        <headers>
          <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 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-1">
              <wsse:Username></wsse:Username>
              <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"></wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </headers>
      </endpoint>
    </client>
</system.serviceModel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...