【问题标题】:Spring-WS payload based endpoint mapping unsuccessful in case of WS-Security Encryption在 WS-Security 加密的情况下,基于 Spring-WS 有效负载的端点映射不成功
【发布时间】:2014-08-27 23:21:17
【问题描述】:

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

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

请不要告诉我 SoapActionAnnotationMethodEndpointMapping 是解决方案。难道没有更好的办法吗?我不喜欢基于 SOAP Action 或 WS-A Action 的路由。

【问题讨论】:

  • Ivan 能否向我们展示您如何定义您的自定义 EndpointMapping?

标签: spring-ws


【解决方案1】:

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

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

【讨论】:

  • 感谢 Arjen 的回答。编写我自己的 EndpointMapping 听起来是一个有趣的选择。
  • 我们设法按照您的建议使用自定义 EndpointMapping 解决了我们的问题。我们将它与 PayloadRootAnnotationMethodEndpointMapping 一起应用。其中一个总能找到正确的端点。
猜你喜欢
  • 2014-12-06
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多