CXF SOAP JAX-WS WSS4JInInterceptor更改名称空间并导致解组错误

塞巴斯蒂安·迪昂(Sebastien Dionne)

我在端点中使用WSS4JInInterceptor来验证授权。

我在端点中有那个

这是我的SOAP消息

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
          <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                 <wsse:UsernameToken wsu:Id="UsernameToken-1">
                       <wsse:Username>username</wsse:Username>
                       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"/>
                 </wsse:UsernameToken>
          </wsse:Security>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
          <newAsset xmlns="http://api.com.acme/">
                 <date xmlns="">2018-02-04T14:35:59Z</date>
                 <assetId xmlns="">1</assetId>
          </newAsset>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我将消息跟踪到WSS4JInInterceptor中,发现收到的SOAP消息已重写为:(替换为空白名称空间)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
          <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                 <wsse:UsernameToken wsu:Id="UsernameToken-1">
                       <wsse:Username>username</wsse:Username>
                       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"/>
                 </wsse:UsernameToken>
          </wsse:Security>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
          <newAsset xmlns="http://api.com.acme/">
                 <date xmlns="http://api.com.acme/">2018-02-04T14:35:59Z</date>
                 <assetId xmlns="http://api.com.acme/">1</assetId>
          </newAsset>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

并导致解组错误。

如果我对SOAP消息进行一些更改(添加前缀)以发送该消息,则WSS4JInInterceptor不会更改默认名称空间,并且该消息将被接受。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
          <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                 <wsse:UsernameToken wsu:Id="UsernameToken-1">
                       <wsse:Username>username</wsse:Username>
                       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"/>
                 </wsse:UsernameToken>
          </wsse:Security>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
          <api:newAsset xmlns:api="http://api.com.acme/">
                 <date xmlns="">2018-02-04T14:35:59Z</date>
                 <assetId xmlns="">1</assetId>
          </api:newAsset>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

有办法避免这种情况吗?第一条消息有效,因此应该接受。我必须在xsd中放一些东西吗?我使用了不合格。我正在使用CXF 3.0.0

丹尼尔·库尔普(Daniel Kulp)

更新到CXF 3.0.3,然后查看它是否仍然失败。我认为有关此问题的一些问题最近已得到解决。如果仍然失败,请记录一个带有测试用例的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

cxf和jax-ws如何关联

来自分类Dev

使用Apache CXF实现的JAX-WS服务上的验证程序错误

来自分类Dev

JAX-WS:如何向SOAP响应中添加其他XML名称空间

来自分类Dev

使用 JAX-WS 和 WS-Addressing 使用 SOAP

来自分类Dev

Jax-Ws解组错误

来自分类Dev

Jax-Ws解组错误

来自分类Dev

JAX-WS CXF WSS4J在运行时添加证书以进行消息签名

来自分类Dev

JAX-WS:如何将其他XML名称空间添加到SOAP响应中

来自分类Dev

JAX-WS和SOAP映射以获得响应

来自分类Dev

Clojure SOAP服务器JAX-WS

来自分类Dev

仅记录Soap请求和响应正文Jax WS

来自分类Dev

SOAP和JAX-WS之间的数据丢失

来自分类Dev

在Jax-WS Client中解析Soap日期

来自分类Dev

如何从JAX-WS读取soap响应头

来自分类Dev

如何使JAX-WS端点接受SOAP1.2消息

来自分类Dev

JAX-WS客户端CXF WS-策略问题

来自分类Dev

使用通用方法时,cxf jax-ws子类没有complexType

来自分类Dev

CXF JAX-WS无法将参数发送到Web服务

来自分类Dev

如何使用JNDI查找在JAX-WS CXF Client中配置地址

来自分类Dev

CXF SOAP服务保留空间

来自分类Dev

CXF SOAP服务保留空间

来自分类Dev

如何从 jax ws webservice 的 8080 更改端口?

来自分类Dev

JAX-WS Webapp的部署错误

来自分类Dev

spring-ws,CXF,soap(camel component)调用Web服务之间有什么区别?

来自分类Dev

spring-ws,CXF,soap(camel component)调用Web服务之间有什么区别?

来自分类Dev

cxf ws 客户端向服务器发送请求的最佳实践(soap)

来自分类Dev

服务器未响应时,JAX-WS SOAP Service冻结

来自分类Dev

您可以使用JAX-WS和SOAP抛出链式异常吗?

来自分类Dev

JAX-WS-多个Web服务-SOAP处理程序不起作用