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