Мы работаем над настраиваемым сервером oAuth2 для внутреннего использования в основном в целях авторизации доступа к API, и нам необходимо ограничить попытки запроса токена для клиента в случае сбоя аутентификации. Мы бы достигли этого, записав в таблицу базы данных, какой ip запросил токен, какой идентификатор клиента использовался и в какой момент int time. добавьте к нему, чтобы он делал то, что нам нужно
Как и вещи go, он идет на BasicAuthenticationFilter
при первом запросе токена. Это вызывает вызов Authenticate () ProviderManager и, в свою очередь, DaoAuthenticationProvider
, который, наконец, решает аутентифицировать или не пройти аутентификацию с помощью BadCredentialsException
.
То, что мне удалось достичь, - это вставить фильтр, который срабатывает до BasicAuthenticationFilter, я думаю, мы могли бы продублировать все, что делает BasicAuthenticationFilter, вплоть до DaoAuthenticationProvider и обрабатывать попытки там и не запускать следующий BasicAuthenticationFilter, но я думаю, что это дублирует много кода.
Я бы предпочел просто расширить DaoAuthenticationProvider
и обработать там logi c. Но я не нашел способа указать ProviderManager BasicAuthenticationFilter
использовать другой AuthenticationProvider
или как настроить BasicAuthenticationFilter
ProviderManager
.
Это настраивается в @EnableAuthorizationServer
аннотированный @Configuration
класс, который extends AuthorizationServerConfigurerAdapter
.
Итак, мой вопрос: как мне go об этом? Кому-нибудь приходилось реализовывать подобное требование?