2010-07-16 6 views
3

CustomBinding을 사용하여 Soap 1.1 (끝점에서 1.2를 지원하지 않음) + Addressing 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 메시지를 보냅니다.

<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 : 여기 RSTR 봉투의 흔적이다

<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" />을 설정할 수 있습니다.

관련 문제