因此,我正在使用Spring Boot来实现与第三方互操作的服务API。我使用基于有效负载的路由,因为它们不发送SOAPAction或任何寻址信息。但是,当请求进入时,它会尝试映射其中一个传入的加密相关元素并且无法映射。我认为问题在于我在第三方的朋友对元素加密了操作元素:
<n1:body>
<n2:SomeOperation> // This is
...some content... // all
</n3:SomeOperation> // encrypted
</n1:body>
从我的阅读中,Spring尝试在加密之前映射到端点,因此有效负载映射永远不会起作用。我可以使用@Action或@SoapAction,但他们使用Soap 1.2(所以没有动作头)并且不使用寻址。我还验证了正在添加Wss4SecurityInterceptor,但在发出请求时从不调用。
我对这种情况的评估/理解是否正确?任何人都可以想到任何解决方法,因为让远程方改变任何东西几乎是不可能的。
一个相关的问题(希望问一个不太正统):我试图让我的测试客户端只加密我的操作元素的内容,但我的setSecurementEncryptionParts()
调用不是很好。这是传出的有效负载(来自控制台):
<ns2:EchoTestInput xmlns:ns2="http://xml.netbeans.org/schema/EchoTestSchema">
<ns2:valueIn>Quack</ns2:valueIn>
</ns2:EchoTestInput>
这是对setSecurementEncryptionParts()
securityInterceptor.setSecurementEncryptionParts("{Content}{http://xml.netbeans.org/schema/EchoTestSchema}EchoTestInput");
我认为这一切都很容易,但我猜不是。提前感谢一百万!