在WS-Security Encryption的情况下,基于Spring-WS有效负载的端点映射不成功

时间:2014-08-27 23:21:18

标签: spring-ws

将PayloadRootAnnotationMethodEndpointMapping与WS-Security Encryption一起使用时,我收到此错误:[EndpointNotFound]找不到[SaajSoapMessage {http://www.w3.org/2001/04/xmlenc#} EncryptedData]

的端点映射

Spring WS希望首先找到正确的端点,然后才解密SOAP主体。这显然不是正确的做法。

请不要告诉我SoapActionAnnotationMethodEndpointMapping是解决方案。有没有更好的方法?我不想基于SOAP Action或WS-A Action进行路由。

1 个答案:

答案 0 :(得分:0)

不幸的是,使用SoapActionAnnotationMethodEndpointMappingAnnotationActionEndpointMapping是您可以使用的唯一提供的映射。在Spring-WS中,在调用任何拦截器之前查询EndpointMapping - 包括安全拦截器,这样你就必须找到一个不依赖于加密消息有效负载的映射。

也就是说,因为EndpointMapping是一个接口,你也可以编写自己的接口,并包含你能想到的任何类型的路由逻辑。从AbstractAnnotationMethodEndpointMapping扩展是这种方法的良好开端。完成映射后,只需将其连接到应用程序上下文中,它就应该由Spring-WS MessageDispatcher自动检测。