[英]Calling a REST web service secured with Spring Security from Android
[英]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 <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.