我有一个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>
答案 0 :(得分:0)
将拦截器添加到入站故障拦截器链以及“jaxws:inFaultInterceptors”(不仅仅是入站拦截器链)。
科尔姆。
答案 1 :(得分:0)
我能够通过使用安全策略而不是配置WSS4JInInterceptor来解决这个问题 - WSDL包含了安全策略,并且没有为SoapFaults设置加密。