Exception handling SpringWeb服务和Spring安全异常处理

Exception handling SpringWeb服务和Spring安全异常处理,exception-handling,spring-security,spring-ws,wss4j,Exception Handling,Spring Security,Spring Ws,Wss4j,我试图想出一种解决方案,将SpringSecurity中的异常级联为SpringWeb服务中的soap错误 我们使用SpringWeb服务,并使用SimplePlainTextPasswordValidationCallbackHandler执行身份验证。但是,spring security中的所有自定义异常都会在Soap响应中作为“无效Soap头”输出。这是默认行为 我们是否可以通过任何方式覆盖此行为,将自定义异常级联到SpringWS 谢谢 为此,您需要实现EndpointException

我试图想出一种解决方案,将SpringSecurity中的异常级联为SpringWeb服务中的soap错误

我们使用SpringWeb服务,并使用
SimplePlainTextPasswordValidationCallbackHandler
执行身份验证。但是,spring security中的所有自定义异常都会在Soap响应中作为“无效Soap头”输出。这是默认行为

我们是否可以通过任何方式覆盖此行为,将自定义异常级联到SpringWS


谢谢

为此,您需要实现EndpointExceptionResolver,因为XwsSecurityInterceptor的handleValidationException方法将异常委托给该解析器,如前所述和所述。或者,您可以简单地将SoapFaultMappingExceptionResolver添加到applicationContext.xml,如下所示:

<beans>
<bean id="exceptionResolver" class="org.springframework.ws.soap.server.endpoint.SoapFaultMappingExceptionResolver">
    <property name="defaultFault" value="SERVER"/>
    <property name="exceptionMappings">
        <value>
            org.springframework.oxm.ValidationFailureException=CLIENT,Oops!Something went wrong
        </value>
    </property>
</bean>
</beans>

org.springframework.oxm.ValidationFailureException=客户端,Oops!出了点问题

有关此的更多信息

感谢您提供此信息。我还意识到,我们使用的是XWSS安全拦截器,无论我做了什么配置,它都会将所有异常屏蔽为安全头错误。此外,我们没有覆盖SpringPlainTextValidationCallbackHandler默认行为的选项。我最终使用了WSS4J,它允许我自定义密码处理程序行为并引发自定义身份验证异常。使用您指出的异常解析器配置,我就能够将自定义身份验证异常级联为soap错误!