Как получить настраиваемый поставщик проверки подлинности Spring 2 для принятия UsernamePasswordAuthenticationToken?
В Spring 2 я создал собственного провайдера аутентификации, потому что я не могу извлечь пароль из базы данных, как предпочитает Spring, потому что на пути есть черный ящик. Когда я пытаюсь пройти аутентификацию, я получаю:
Не найден поставщик проверки подлинности для org.springframework.security.providers.UsernamePasswordAuthenticationToken
Я поместил этот bean в мой security.xml:
<bean id="imsAuthProvider" class="com.terrapages.mokbeecds.ims.IMSAuthenticationProvider">
<security:custom-authentication-provider />
</bean>
Что, я считаю, все, что мне нужно. Он должен просто взять имя пользователя и пароль из формы и передать их моему провайдеру, чтобы он справился с ними так, как считает нужным. У меня также есть это в моем customAuthenticationProvider:
public boolean supports(@SuppressWarnings("rawtypes") Class authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
Который, насколько я понимаю, проверяется перед передачей токена аутентификации провайдеру нестандартной аутентификации. Если он возвращает false, то Spring проверяет следующий поставщик аутентификации.
Главный authenticate(Authentication)
метод может только бросить BadCredentialsException
или AuthenticationServiceException
, что, как я понимаю, не должно вызывать вывод выше.
Информацию о Spring 2 немного сложно найти, так как Spring 3 сейчас везде.
Как мне заставить моего провайдера принять UsernamePasswordAuthenticationToken
?
1 ответ
Spring Security 2 также хорошо документирован: http://static.springsource.org/spring-security/site/docs/2.0.x/reference/html/springsecurity.html Пожалуйста, используйте следующий метод поддержки:
public boolean supports(Class authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
отредактированный
Предложения:
- Удалите вашего провайдера - аутентификация должна работать. Если нет - исправьте проблему.
- Отладка аутентификации и поддержка метода и посмотреть, в чем проблема