解密在肥皂故障上失败



我有一个 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 设置加密。

最新更新