2010-07-16 107 views
3

我使用CustomBinding啓用Soap 1.1(端點不支持1.2)+尋址1.0。端點只能通過SSL使用,並且可以在某種Java/Weblogic平臺上運行。WCF:CustomBinding混淆了端點

這裏是我的配置:

<customBinding> 
    <binding name="Soap11Addr10"> 
     <textMessageEncoding messageVersion="Soap11WSAddressing10" /> 
     <httpsTransport/> 
    </binding> 
</customBinding> 

[...]

<endpoint address="https://sekrit:444/more-sekrits/even-more" 
    binding="customBinding" bindingConfiguration="Soap11Addr10" 
    contract="SomePort" name="SomePortService" /> 

這種配置似乎混淆了終點。當我對SomePort執行請求時,WCF首先發送一個RequestSecurityTokenResponse消息,我認爲這可能是不幸的。這裏是RSTR信封的痕跡:

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"> 
    <s:Header> 
    <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue</a:Action> 
    <a:RelatesTo>urn:uuid:7348d908-b767-43e8-9770-09a38461ee87</a:RelatesTo> 
    </s:Header> 
    <s:Body> 
    <t:RequestSecurityTokenResponse Context="uuid-7a3c9fde-053d-46e7-aa08-f5725b082691-287" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <t:BinaryExchange ValueType="http://schemas.xmlsoap.org/ws/2005/02/trust/spnego" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">TlRMTVNTUAACAAAAEAAQADgAAAA1wpriPjzjL4iwIJhAmcsBAAAAAGAAYABIAAAABgByFwAAAA9TAEsATwBHAEsAQQBUAFQAAgAQAFMASwBPAEcASwBBAFQAVAABABAAUwBLAE8ARwBLAEEAVABUAAQAEABTAGsAbwBnAGsAYQB0AHQAAwAQAFMAawBvAGcAawBhAHQAdAAHAAgAj73D884kywEAAAAA</t:BinaryExchange> 
    </t:RequestSecurityTokenResponse> 
    </s:Body> 
</s:Envelope> 

端點barfs:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <env:Header></env:Header> 
    <env:Body> 
    <env:Fault xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/"> 
     <faultcode xmlns="">ns0:MustUnderstand</faultcode> 
     <faultstring xml:lang="en" xmlns="">One or more mandatory SOAP header blocks not understood</faultstring> 
    </env:Fault> 
    </env:Body> 
</env:Envelope> 

是否有可能被停止發送初始RSTR?

我可以根據要求提供更多的跟蹤和日誌數據。

回答

0

不知道更多關於目標服務的信息,很難說它的期望值,但我猜WCF正在使用消息安全性,這意味着每條消息都被單獨加密。您可能只需要傳輸級安全性(即https)。

您可以嘗試在綁定配置中設置<security mode="Transport" />