簡體   English   中英

使用Java調用安全的Web服務

[英]Calling a secured Web Service in Java

我需要編寫一個Web服務客戶端來調用第三方Web服務(基於SOAP)。 第三方發布了wsdl和相關的xsd文件。

第三方使用.p12證書保護其網站和服務

我使用wsdl2java生成我的存根。 我修改了端點並調用了服務。 我收到以下錯誤:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header></SOAP-ENV:Header>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">wsse:InvalidSecurity</faultcode>
         <faultstring>SECU1075: An error was discovered processing the &lt;wsse:Security> header</faultstring>
         <detail>SECU3510: Signature requirements validation failed: Element (/soapenv:Envelope/soapenv:Body) was not signed</detail>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

嗯,好的。 有道理我應該簽署文件。

奇怪的部分(對我來說)是WSDL文件中沒有任何安全定義。 這是正常的嗎? 我聯系了第三方,他們向我發送了一個關於SOAP消息需要的pdf。 標題中顯示以下標記:包含:

<wsse:BinarySecurityToken>

<dsig:SignedInfo>

所以從我收集的內容來看,它需要我的證書和一些數字簽名。

有人可以推薦如何在Java中生成這些? 我開始沿着Axis2 / Rampart路徑開始,但老實說,似乎這些都是基於WSDL文件中定義的安全要求(如果我錯了,請糾正我)。

看起來您需要使用WS-Security標准為您簽名。 WS-security標准未指定任何到wsdl文件的安全性映射。 某些應用程序將WS-Security策略和WS-Policy Attachement與Ws-security結合使用。 WS-Policy Attachment確定了將策略映射到WSDL的方法。

您可以從w3.org了解有關這些標准的更多信息

是的,你是在正確的道路上,可以使用WSS4J或軸壁壘你的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM