Spring 安全性 - Wss4jSecurityInterceptor - 空指针

Spring Security - Wss4jSecurityInterceptor - Nullpointer

我有幸将大型单体系统从 Java7 和 Scala 2.10 迁移到 Java8 和 Scala 2.11。到目前为止,一切都很好。该应用程序正在使用 SpringSecurity。

将 spring 库更新到最新版本后,我们在此处的 validateMessage 方法中遇到了 Wss4jSecurityInterceptor 抛出的空指针异常:

if (validationActionsVector.contains(WSConstants.NO_SECURITY)) {
            return;
}

运行 测试期间发生异常。然而,在我 post 这里有大量代码 (test/implementation..) 之前,可能有人知道在哪里解决问题 - 或者应该更详细地研究哪一部分。

编辑:

一个有趣的事实是,通过使用 Java7 和 Scala 2.10(具有相同的库版本)进行编译,空指针异常不会发生。

主要原因是ws和xmlsec的版本不一致。 如果您只是客户,那么您可以选择退出验证。

interceptor.setValidationActions("NoSecurity");
interceptor.setValidateResponse(false);

这是一个 open SWS bug 如果您不使用验证(未设置 validationActions),则执行:

interceptor.setValidateResponse(false);
interceptor.setValidateRequest(false);

编辑: 截至 2017 年 10 月 30 日,该错误已关闭。应该适用于 2.4.1、3.0.0.RELEASE 及更高版本。