2010-11-05 58 views
5

是否可以使用JAX-WS創建WebService,然後由WCF客戶端使用這種綁定來使用它?使用WCF客戶端的Java JAX-WS服務

<bindings> 
     <basicHttpBinding> 
      <binding name="CaseObjectServicePortBinding" > 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="TransportWithMessageCredential"> 
        <transport clientCredentialType="Certificate"/> 
        <message clientCredentialType="Certificate" /> 
       </security> 
      </binding> 

     </basicHttpBinding> 
    </bindings> 

我創造了這樣一個服務,而不WSIT現在,只是一個普通的服務,並希望忽略傳入SOAP消息中的「安全」頭。但它失敗:

「無法爲具有權限'xxxxxxxxxx'的SSL/TLS建立安全通道。」

如果我改變:

<security mode="TransportWithMessageCredential"> 
        <transport clientCredentialType="Certificate"/> 
        <message clientCredentialType="Certificate" /> 
       </security> 

到:

<security mode="Transport"> 
        <transport clientCredentialType="Certificate"/> 
        <message clientCredentialType="Certificate" /> 
       </security> 

一切完美的作品。任何想法我做錯了什麼?

回答

0

答案是肯定的。您可以使用basicHttpBinding的或WsHttpBinding的

當您使用TransportWithMessageCredential錯誤出現在因爲WCF客戶端將徵收額外的安全性,以你的信息通過網絡發送,這是可互操作的只是WCF服務。

將其更改爲Transport後,僅應用傳輸安全性(使用SSL的證書),以便客戶端和服務器之間能夠理解如何相互通信。

乾杯。

0

當定義安全性爲TransportWithMessageCredential時,你會說:我想要一個通過安全傳輸通道(HTTPS)進行通信的服務,並且我想在SOAP頭中傳遞客戶端證書。

如果您在消息元素中定義證書憑證類型,請說:SOAP頭將傳輸客戶端憑證作爲x.509證書令牌配置文件。它是可互操作的格式,需要服務上的WS-Security。

如果您在傳輸元素中定義了Certifiate憑證類型,您會說:我想要相互SSL身份驗證。我實際上不確定這是否使用,如果你定義TransportWithMessageCredential

0

這發生在啓動請求的步驟; TLS異常會彈出,因爲客戶端上設置的證書不受信任。使用具有公共目的地名稱的證書,如果您在公共場合使用該域名,則使用目標IP地址作爲通用名稱,並且工作得很好。 PS:如果你想繼續https內容類型'text/xml'soap 11使用'basichttps'綁定jaxws中的默認設置