2012-04-21 2 views
0

Я пытаюсь придумать решение для каскадных исключений из Spring security в качестве мыльных ошибок в Spring Web-сервисах. Мы используем веб-службы Spring и выполняем аутентификацию с помощью SimplePlainTextPasswordValidationCallbackHandler. Однако все индивидуальные исключения из весенней безопасности получают выход как «Недопустимый заголовок мыла» в ответ на мыло. Полагаю, это поведение по умолчанию. В любом случае мы могли бы переопределить это поведение, чтобы каскадировать наше настроенное исключение в Spring WS?Spring Web Services и Spring Security Обработка исключений

Спасибо.

ответ

0

Для этого вам необходимо реализовать EndpointExceptionResolver, поскольку метод handleValidationException для XwsSecurityInterceptor делегирует исключение этому резольверу, как упомянуто here и . Или вы можете просто добавить 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> 

Дополнительной информации о here

+0

Спасибо за эту информацию. Я также понял, что мы использовали перехватчик безопасности XWSS, который замаскировал бы все исключения как ошибки заголовка безопасности независимо от того, какую конфигурацию я сделал. Также у нас не было возможности переопределить поведение SpringPlainTextValidationCallbackHandler по умолчанию. Я закончил использование WSS4J, что позволило мне настроить поведение обработчика паролей и исключить исключение аутентификации. Используя конфигурацию распознавателя исключений, вы указали, что тогда я смог каскадировать мои пользовательские проверки подлинности как мыльные ошибки! –

Смежные вопросы