Я хотел бы использовать весеннюю безопасность в приложении весеннего mvc, которое состоит из двух модулей - «frontend» и модуля управления. Оба модуля имеют свой собственный диспетчерский сервлет (с разными сопоставлениями), поэтому у них есть свой собственный веб-контекст, но они имеют один и тот же корневой контекст.Как настроить весеннюю безопасность для нескольких сервлетов?
Модуль управления имеет свою собственную базу данных аутентификации, и пользователи должны иметь возможность входа в модуль «frontend» и управления одновременно с разными учетными данными. Поэтому я реализовал две разные версии: UserDetailsService
.
Мне нужно два разных AuthenticationManager
, где оба ответственны за разные URL-адреса, соответствующие отображениям сервлетов.
Как настроить такую настройку? Возможно ли использование java config?
Редактировать: до сих пор у меня есть следующая конфигурация, которая позволяет мне авторизовать пользователей для модуля управления. Аутентификация/авторизация модулей «frontend» с использованием автообновленного frontendUserDetailsService
по-прежнему отсутствует.
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
@Qualifier("frontend")
private UserDetailsService frontendUserDetailsService;
@Autowired
@Qualifier("management")
private UserDetailsService managementUserDetailsService;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(managementUserDetailsService)
.passwordEncoder(passwordEncoder);
}
@Bean
@Qualifier("management")
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/manage/**")
.authorizeRequests()
.anyRequest()
.hasRole("ADMIN")
.and()
.formLogin();
}
}
Вы читали [документацию] (http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/ htmlsingle/# множественного httpsecurity)? –
Да, но это помогло мне настроить несколько экземпляров 'HttpSecurity'. Но это не позволяет мне настраивать разные 'AuthenticationManager'. Я просто просматриваю источник весенней безопасности и считаю, что можно было бы переопределить поведение по умолчанию для создания «AuthenticationManager», но до сих пор я не нашел чистого решения (должен работать над переопределением «WebSecurityConfigurerAdapter # authenticationManager» и используйте множественный подход «HttpSecurity» выше). –
Да, это так, как вы можете также переопределить метод configure, который позволяет настроить диспетчер проверки подлинности. –