HttpSecurity, WebSecurity и AuthenticationManagerBuilder

Может ли кто-нибудь объяснить, когда следует переопределять configure(HttpSecurity), configure(WebSecurity) и configure(AuthenticationManagerBuilder)?

Ответ 1

configure (AuthenticationManagerBuilder) используется для создания механизма аутентификации, позволяя легко добавлять AuthenticationProviders: например, Ниже описывается аутентификация в памяти с встроенными входами "пользователь" и "админ".

public void configure(AuthenticationManagerBuilder auth) {
    auth
        .inMemoryAuthentication()
        .withUser("user")
        .password("password")
        .roles("USER")
    .and()
        .withUser("admin")
        .password("password")
        .roles("ADMIN","USER");
}

configure (HttpSecurity) позволяет настроить сетевую безопасность на уровне ресурсов на основе соответствия выбора - например, В приведенном ниже примере ограничиваются URL-адреса, начинающиеся с/admin/для пользователей с ролью ADMIN, и объявляет, что любые другие URL-адреса должны быть успешно аутентифицированы.

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeUrls()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .anyRequest().authenticated()
}

configure (WebSecurity) используется для параметров конфигурации, которые влияют на глобальную безопасность (игнорируют ресурсы, устанавливают режим отладки, отклоняют запросы, реализуя пользовательское определение брандмауэра). Например, следующий метод приведет к игнорированию любого запроса, начинающегося с /resources/, для целей аутентификации.

public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
        .antMatchers("/resources/**");
}

Вы можете обратиться к следующей ссылке для получения дополнительной информации Spring Безопасность Предварительный просмотр конфигурации Java: веб-безопасность