Spring-Boot Настройка базовой аутентификации на один путь веб-приложения?

Я пытаюсь настроить единственный путь (/ basic) в моем приложении на основе MVC с пружинной загрузкой, чтобы он был защищен от базовой аутентификации. Я просто собираюсь настроить это, используя мои собственные параметры конфигурации, чтобы имя пользователя и пароль были просто «admin» и «admin».

В настоящее время это работает для пути / basic (мне предлагают и я могу войти правильно). Проблема в том, что выход из системы не работает (и я не уверен, почему), а также другие пути (как показано / другие показаны) запрашивают базовые учетные данные аутентификации (прежде чем всегда будет отказано).

static class MyApplicationSecurity extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/open").permitAll();
        http.authorizeRequests().antMatchers("/other").denyAll(); // Block it for now
         http.authorizeRequests().antMatchers("/basic").authenticated().and().httpBasic().and().logout().logoutUrl("/basic/logout").invalidateHttpSession(true).logoutSuccessUrl("/");
    }
}

Я ожидал, что / other всегда будет отказано, но я не понимаю, почему для этого подходит базовая аутентификация. / открыть работает, как и ожидалось. Я также не понимаю, почему / basic / logout не выводит меня из системы (также не выдает сообщений об ошибках). У меня есть небольшой кусочек кода в качестве заполнителя для конечной точки выхода из системы, но если у меня его нет, я получаю 404. «Домашний» вид - это мой корень веб-приложения, поэтому я просто хочу отправить пользователя туда после выхода из системы.

@RequestMapping("/logout")
public ModelAndView logout() {
    // should be handled by spring security
    return new ModelAndView("home");
}

ОБНОВЛЕНИЕ: Вот решение, которое, казалось, сработало в конце (кроме части выхода из системы, все еще не работающей):

@Configuration
@Order(1) // HIGHEST
public static class OAuthSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/oauth").authorizeRequests().anyRequest().denyAll();
    }
}

@Configuration
public static class BasicAuthConfigurationAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/basic").authorizeRequests().anyRequest().authenticated().and().httpBasic();
        http.logout().permitAll().logoutUrl("/logout").logoutSuccessUrl("/").invalidateHttpSession(true);
        //.and().logout().logoutUrl("/basic/logout").invalidateHttpSession(true).logoutSuccessUrl("/");
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос