Рукопожатие TLS службы WCF с использованием защиты сообщений - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь реализовать собственный клиент службы WCF. Сервер использует wsHttpBinding и защиту сообщений без учетных данных клиента. Я должен программно сформировать правильный конверт мыла, чтобы начать рукопожатие TLS. Я получил первоначальный запрос от стандартного клиента WCF. Сообщение выглядит так:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
   <s:Header>
      <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
      <a:MessageID>urn:uuid:f88d1721-29ce-4418-994e-a3796f053e63</a:MessageID>
      <a:ReplyTo>
         <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
      </a:ReplyTo>
      <a:To s:mustUnderstand="1">http://localhost:56635/Service1.svc</a:To>
   </s:Header>
   <s:Body>
      <t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" Context="uuid-6549ee11-0349-4dbc-8686-6b7f0b079251-1">
         <t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType>
         <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
         <t:KeySize>256</t:KeySize>
         <t:BinaryExchange ValueType="http://schemas.xmlsoap.org/ws/2005/02/trust/tlsnego" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">FgMBAFoBAABWAwFPQ8mbvU/nL8Cgu/CRIhhvVyRAYNdppNpdUY2UEi/GLQAAGAAvADUABQAKwBPAFMAJwAoAMgA4ABMABAEAABX/AQABAAAKAAYABAAXABgACwACAQA=</t:BinaryExchange>
      </t:RequestSecurityToken>
   </s:Body>
</s:Envelope>

Проблема в том, что я не могу понять, какое значение я должен кодировать и вставить в тег BinaryExchange. Любая помощь будет оценена.

1 Ответ

1 голос
/ 12 апреля 2012

вы не хотите идти по этому пути. здесь задействованы два сложных стандарта (ws-secureconversation и ssl nego). каждый включает в себя несколько обменов сообщениями. Вам нужно будет очень усердно работать, чтобы все подписанные и зашифрованные части были правильными. Вы должны использовать обычный клиент WCF.

...