Exception handling SpringWeb服务和Spring安全异常处理
我试图想出一种解决方案,将SpringSecurity中的异常级联为SpringWeb服务中的soap错误 我们使用SpringWeb服务,并使用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
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错误!