用户名令牌验证错误

Username Token Validation Error

我正在开发一个使用从 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)

如果你能帮我解决这个问题,我将不胜感激

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” 相反。