2012-04-21 112 views
0

我想要將Spring安全中的異常層級化爲Spring Web服務中的soap錯誤。 我們使用Spring Web服務並使用SimplePlainTextPasswordValidationCallbackHandler執行身份驗證。 但是,在soap響應中,來自Spring安全性的所有自定義異常都會以「無效Soap Header」的形式輸出。這是相信是默認行爲。 任何我們可以重寫這種行爲的方式來將我們自定義的異常級聯到Spring WS?Spring Web服務和Spring安全異常處理

謝謝。

回答

0

爲此,您需要實現EndpointExceptionResolver,因爲XwsSecurityInterceptor的handleValidationException方法將該異常委託給此解析器,如here和所述。在這個here

+0

感謝這個信息

<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> 

更多信息:或者,你可以簡單地添加SoapFaultMappingExceptionResolver您的applicationContext.xml這樣。我也意識到我們正在使用XWSS安全攔截器,無論我做了什麼配置,它都會將所有異常掩蓋爲安全標頭錯誤。此外,我們沒有選擇重寫SpringPlainTextValidationCallbackHandler的默認行爲。我結束了使用WSS4J,它允許我自定義密碼處理程序行爲並拋出自定義身份驗證異常。使用異常解析器配置,您指出我可以將自定義身份驗證異常級聯爲soap錯誤! – 2012-05-13 15:09:46