全身加密时的Spring WS端点路由

时间:2016-07-29 02:05:34

标签: web-services soap spring-boot spring-ws

因此,我正在使用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");

我认为这一切都很容易,但我猜不是。提前感谢一百万!

0 个答案:

没有答案