SoapFaults 解密失败

Decryption failing on SoapFaults

我有一个 CXF 客户端可以访问实现 WSS4J 的外部 CXF 端点。我能够成功地将格式良好的消息传递到端点。如果我的请求说缺少一些必填字段,我会收到安全异常并且实际的 SoapFault 会丢失,因为生成 SoapFault 时响应未加密。

我们如何解决这种情况 - 是否可以将输入设置为处理响应中实际存在的 WSS4J 操作。这是我的入站安全配置

<bean id="inbound-security" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
    <constructor-arg>
        <map>
            <entry key="action" value="Timestamp Signature Encrypt" />
            <entry key="signaturePropFile" value="${encryptionPropFile}" />
            <entry key="decryptionPropFile" value="${signaturePropFile}" />
            <entry key="passwordCallbackClass" value="WSS4JPasswordCallback" />
        </map>
    </constructor-arg>
</bean>

将您的拦截器也添加到入站故障拦截器链中 "jaxws:inFaultInterceptors"(不仅仅是入站拦截器链)。

我能够通过使用安全策略而不是配置 WSS4JInInterceptor 来解决这个问题 - WSDL 已经包含安全策略并且没有为 SoapFaults 设置加密。