我正在从事一个使用CXF SOPMESSAGE生成的项目的项目细绳。我正在尝试使用用户名令牌验证,但它会引发 NullPoInterException 。
这是我使用的源代码[1]。我将肥皂消息[2]作为一个字符串到 initiateComplianCecheck 方法,然后将其转换为CXF SOAPMESSAGE对象,然后将其用于用户名代币身份验证。
[1] https://gist.github.com/anonymous/bfb65194a030a50681af175a99937f5
[2] https://gist.github.com/anonymous/f704db6147e02acdff32323dc67ccfff6d6
但是cxf handlemessage给出了nullpointerexception
这是抛出错误消息的一部分
java.lang.NullPointerException at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterc
eptor.java:165)
感谢您是否可以帮助我解决此问题
NPE是因为在肥皂上没有设置消息交换。您可以在代码中添加以下内容:
Exchange ex = new ExchangeImpl();
ex.setInMessage(message);
示例:
https://github.com/apache/cxf/blob/3.1.x-fixes/rt/ws/security/src/src/test/java/java/java/opache/cxf/cxf/crache/security/security/security/security/security/wsss4j/wss4jinouttest.jinouttest.jintestes4jinouttest.jjintestestestes4jinouttest.jjava
顺便说一句,我在样本中使用的WSSE名称空间来自非常旧标准,行不通。它应该是XMLNS:WSSE ="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wss-wsssecurity-secext-1.0.xsd"而是。