Я успешно создал WS-клиент, который работает правильно, когда НЕ использует аутентификацию.
Однако сервер (WebSphere) теперь требует добавления маркера имени пользователя ws-security, и мне сложно это делать. Полученное сообщение SOAP должно выглядеть примерно так:
<soapenv:Envelope 
  xmlns:ns="http://foo.bar/1.0"
  xmlns:ns1="http://www.witsml.org/schemas/140"   
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:Username>foo</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bar</wsse:Password>    
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">foooooobar==</wsse:Nonce>
        <wsu:Created>2010-01-25T13:09:24.860Z</wsu:Created>
      </wsse:UsernameToken>
    </wsse:Security>
  </soapenv:Header>
  <soapenv:Body>
    <ns:fooBar>...</ns:fooBar>
  </soapenv:Body>
Я загрузил и установил Microsoft WSE 3.0 SDK и добавил ссылку на DLL в моем проекте Visual Studio 2005.
Теперь у меня есть доступ к пространствам имен Microsoft.Web.Services3. *, но в настоящее время я не понимаю, как это сделать.
Клиентский код был сгенерирован автоматически с помощью веб-ссылки, поэтому я выполняю незначительную работу для отправки сообщения на сервер, не прошедший проверку:
WS.FooResultHttpService ws = new WS.FooResultHttpService();
ws.Url = "http://foo.bar.baz";
ws.SendSomething(message);
Я только начал исследовать с помощью Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager, но до сих пор мне не удалось что-то запустить и запустить.
Любые подсказки будут очень признательны, поскольку я не могу найти полезные рецепты в сети.
Спасибо!
