将 WS-Security 应用于原始 SOAP 负载

Applying WS-Security to raw SOAP payload

使用基于 Java 的集成引擎(好笑,出于好奇),我需要签署一个通过引擎传递的 SOAP 负载。我所拥有的只是原始的未签名 SOAP XML 以及安装扩展和调用 Java API 的能力。

到目前为止,我的 google 搜索没有显示任何 APIs/frameworks 可以有效地让我有效地设置 WS-Security 参数,然后将原始负载传递给它进行签名。如果需要的话,安装提供此功能的第三方 jar 不是问题。我查看了 Apache-CXF 和 JAX-WS,但据我所知,它们使用的是存根 Java 类,而不是原始负载。

我是否遗漏了一些明显的东西,或者我是否必须编写自定义 WS-Security 实现?

WSS4J library supports signing any XML parsed with DOM or STAX API (SOAP message or not). You can find examples in the source code 的单元测试(DOM API 的文件夹 ws-security-dom 和 StaX API 的 ws-security-stax ).

例如,如果您使用 DOM API,CertificateStoreTest#testSignatureDirectReference() 的代码显示了如何签署 SOAPPart,它是一个解析为 DOM 文件.