Как настроить пользовательскую привязку для использования этого безопасного веб-сервиса WS с использованием WCF? - PullRequest
1 голос
/ 02 апреля 2010

Я пытаюсь настроить клиент WCF для использования веб-службы, которая возвращает следующее ответное сообщение:

Ответное сообщение

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://myservice.wsdl">
  <env:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:mustUnderstand="1" />
  </env:Header>
  <env:Body>
    <ns0:StatusResponse>
      <result>
        ...
      </result>
    </ns0:StatusResponse>
  </env:Body>
</env:Envelope>

Для этого я создал собственную привязку (которая не работает). Я продолжаю получать сообщение "Заголовок безопасности пуст".

Мой переплет:

<customBinding>
    <binding name="myCustomBindingForVestaServices">
      <security authenticationMode="UserNameOverTransport"
            messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
            securityHeaderLayout="Strict"
            includeTimestamp="false"
            requireDerivedKeys="true">
      </security>
      <textMessageEncoding messageVersion="Soap11" />
      <httpsTransport authenticationScheme="Negotiate" requireClientCertificate ="false" realm =""/>
    </binding>
  </customBinding>

Кажется, что в моем запросе используются те же версии SOAP и WS Security, что и в ответе, но используются разные префиксы пространства имен ("o" вместо "wsse"). Может ли это быть причиной того, что я получаю сообщение «Заголовок безопасности пуст»?

Запрос сообщения

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <s:Header>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <o:UsernameToken u:Id="uuid-d3b70d1f-0ebb-4a79-85e6-34f0d6aa3d0f-1">
        <o:Username>user</o:Username>
        <o:Password>pass</o:Password>
      </o:UsernameToken>
    </o:Security>
  </s:Header>
  <s:Body>
    <getPrdStatus xmlns="http://myservice.wsdl">
      <request xmlns="" xmlns:a="http://myservice.wsdl" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        ...
      </request>
    </getPrdStatus>
  </s:Body>
</s:Envelope>

Как мне настроить привязку клиента WCF, чтобы использовать этот веб-сервис?

Любая помощь с благодарностью!

Sander

1 Ответ

0 голосов
/ 07 апреля 2010

Кажется, моя проблема решена в следующей статье: http://support.microsoft.com/kb/971493/

Еще не удалось загрузить исправление, поскольку, похоже, ссылка для скачивания недоступна ... Будет обновлять эту ветку.

...