我需要使用将访问第三方系统(Web服务生产者)的Axis 1.4
构建Web服务客户端应用程序。
为了向第三方系统发送有效请求,我需要加密并签署 SOAP request
,然后再发送给他们。
我按照此链接中的步骤使用wss4j 1.5
执行此任务:
Calling an OWSM protected service with Axis 1.4 and WSS4J
我的理解是:
1-要加密 SOAP
我需要使用第三方公钥,他们会使用自己的私钥对其进行解密。
2-要签名 SOAP
我需要使用自己的私钥,他们应该使用我需要与他们共享的公钥来验证签名。
我做到了,但我收到了错误
faultString: Did not understand "MustUnderstand" header(s)
从第三方结束。在与第三方团队核实后,他们说:
“ 我们使用”带对称密钥的用户名认证“,因此我们不会在我们的信任存储区维护任何客户端证书。只有一个共享密钥用于签名和加密。因此,您需要使用我们的证书进行签名和加密。 “
这个回复对我没有意义。我了解我需要使用第三方证书(即公钥)加密 SOAP Request
。
但是如何使用相同的公钥 - 这是他们共享的唯一证书 - 签署SOAP Request
?
我相信我需要私钥才能做到这一点。
我需要他们的私钥吗?任何澄清都会有所帮助。