2

Мне нужно настроить глобальную базовую HTTP-аутентификацию для промежуточного сервера. Ничего особенного. Я просто хочу, чтобы имя пользователя/пароль запрашивало что-нибудь. Я также хотел бы использовать только конфигурацию Java. Я экспериментировал с множеством разных решений, но никто из них не работал. Я всегда могу получить доступ ко всем ресурсам на сервере. Это то, что я делаю сейчас:Spring MVC 4 Глобальная базовая HTTP-аутентификация

@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    System.out.println("Configuring HttpSecurity"); 

    http 
      .authorizeRequests() 
      .anyRequest().authenticated() 
      .and() 
      .httpBasic(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    System.out.println("Configuring global AuthenticationManagerBuilder"); 

    auth 
      .inMemoryAuthentication() 
      .withUser("user").password("password").roles("USER"); 
    } 
} 

Я могу видеть в журналах, что эти фрагменты в настоящее время выполняются. Как вы можете видеть, в первом методе я требую, чтобы все запросы были аутентифицированы. Во втором методе я указываю в аутентификации в памяти.

+0

Какая ошибка, которую вы получаете? а также как вы пытались войти? нужна дополнительная информация на вопрос – ArunM

+0

Ошибка отсутствует. Проблема в том, что мне не предлагается выполнить базовую HTTP-аутентификацию. Я хочу всегда требовать базовую HTTP-аутентификацию всякий раз, когда запрашивается какой-либо ресурс. –

ответ

0

Ваши заявления SOP печатаются (при создании контейнера) из-за @Configuration (что опять не требуется, так как оно также объявлено @EnableWebSecurity). Вам все равно необходимо зарегистрировать цепочку фильтров весенней безопасности в вашем классе инициализатора web.xml или MVC, который расширяет WebMvcConfigurerAdapter или реализует WebApplicationInitializer, если вы хотите использовать его с цепочкой фильтров приложений. Например (Java конфигурации, как вы ищете то же самое):

EnumSet<DispatcherType> dispatcherTypes = EnumSet.of(
      DispatcherType.REQUEST, DispatcherType.ERROR); 
container.addFilter("springSecurityFilterChain", 
      DelegatingFilterProxy.class).addMappingForUrlPatterns(
      dispatcherTypes, false, "/*"); 

, где контейнер является экземпляром ServletContext.

Смежные вопросы