2012-02-23 1 views
1

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

<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

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