用户名令牌验证错误

时间:2017-04-20 08:20:01

标签: java web-services soap cxf

我正在开发一个项目,该项目使用从a生成的CXF SoapMessage 串。我尝试使用用户名令牌验证,但它会抛出 的的NullPointerException

这是我使用的源代码[1]。我传递一个SOAP消息[2]作为 将字符串转换为 initiateComplianceCheck 方法,然后将其转换为CXF SoapMessage对象,并将其用于用户名令牌身份验证。

[1] https://gist.github.com/anonymous/bfb6f65194a030a50681af175a9937f5

[2] https://gist.github.com/anonymous/f704db6147e02acdff323dc67ccff6d6

但是CXF handleMessage给出了NullPointerException

这是抛出的错误消息的一部分

java.lang.NullPointerException at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterc
eptor.java:165)

感谢您是否可以帮助我解决此问题

1 个答案:

答案 0 :(得分:0)

NPE是因为SoapMessage上没有设置Message Exchange。您可以在代码中添加以下内容:

Exchange ex = new ExchangeImpl();
ex.setInMessage(message);

示例:

https://github.com/apache/cxf/blob/3.1.x-fixes/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/WSS4JInOutTest.java

顺便说一句,我在样本中使用的wsse命名空间来自于 旧标准,不会奏效。它应该是xmlns:wsse =“ http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” 代替。