Я настраиваю мое веб-приложение Spring Security (v4.0.1). Я хочу иметь двух поставщиков проверки подлинности, "в памяти", чтобы управлять учетной записью администратора и пользовательской, которая ссылается на мою собственную реализацию. Система должна попытаться выполнить аутентификацию против провайдера "внутри памяти" в первую очередь и против пользовательского на втором месте. Мой код выглядит следующим образом:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth,
AuthenticationProvider provider) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin")
.password("s3cr3t")
.authorities("ADMIN");
auth.authenticationProvider(provider);
}
Однако этот код приводит к тому, что структура сначала пытается выполнить мою пользовательскую реализацию. Это имеет смысл, поскольку метод AuthenticationManagerBuilder#authenticationProvider
добавляет провайдера во внутренний список, а AuthenticationManagerBuilder#inMemoryAuthentication
один настраивает его внутренне. Как мне удалось заставить его работать?