2011-08-25 2 views
4

.NET에서 Java Web Service (블랙 박스)를 호출하여 각 요청이 인증서로 서명 될 것으로 예상하는 방법을 파악하려고합니다. 문제 없습니다).웹 서비스 사용자 지정 바인딩 - SOAP 헤더 및 메시지에 서명하지만 암호화하지 않음

나는 그것을 얻지 않는다. 내가 시도한 것은 무엇이든 실패합니다. 연구 및 테스트 시간을 보낸 후 올바른 방법으로 basicHttpBinding 대신 customBinding을 사용해야한다고 생각합니다. 내가 성취하고자하는 것은 메시지 본문뿐만 아니라 헤더에 서명하는 것입니다.

인증 모드 CertificateOverTransport을 사용하면 본문이 아니라 SOAP 헤더 만 서명됩니다. 인증 모드를 사용하여 MutualCertificate 모든 것이 서명되고 암호화됩니다.

전체 메시지의 암호화를 비활성화 할 수 있습니까?

답변

3

알겠습니다. 또한

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <customBinding> 
      <binding name="FFB"> 
       <context protectionLevel="Sign" /> 
       <textMessageEncoding messageVersion="Soap11" /> 
       <security authenticationMode="MutualCertificateDuplex" includeTimestamp="true" /> 
       <httpsTransport /> 
      </binding> 
      </customBinding> 
     </bindings> 
    </system.serviceModel> 
</configuration> 

을 그리고 :

바인딩 정보를

service.Endpoint.Contract.ProtectionLevel = ProtectionLevel.Sign; 
+1

감사합니다. 그러나 "context protectionLevel = Sign"및 "... Contract.ProtectionLevel = ProtectionLevel.Sign"은 중복되어야합니다.> 일부 테스트는 "context protectionLevel = Sign"이 아무 효과가없고 제거 될 수 있음을 보여줍니다. 대신 ProtectionLevel을 Sign로 설정하는 코드 행을 제거 할 수 있도록 바인딩에 넣을 항목을 찾고 싶지만 지금까지는 성공하지 못했습니다 .- – jmd

+0

죄송합니다. @jmd, 볼 수 없습니다! 이 [MSDN] (http://msdn.microsoft.com/en-us/library/aa347692%28v=vs.110%29.aspx)에서 매우 두드러진 노트 :'보호 수준은 코드에서만 설정할 수 있습니다. 구성' –