Отключение csrf дает 404 для Spring boot 2.0 - PullRequest
0 голосов
/ 03 мая 2019

Я использую весеннюю загрузку 2.1.4.RELEASE и пытаюсь выяснить 401 несанкционированную ошибку.

Ниже приведен мой класс webconfig

public void configure(WebSecurity web) throws Exception {

            web.ignoring().antMatchers("/somepath/")

    }

@Override
    protected void configure(HttpSecurity http) throws Exception {
    if(securityEnabled) {
        http
                .csrf().disable()  
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .anyRequest().authenticated()
                .antMatchers("/somepath/").permitAll()
                .and()
                .httpBasic()
                .and()
                .anonymous().disable()
                .exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
    }

В моем основном классе я исключил -

 @EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class,org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
    org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class})

Теперь, когда я пытаюсь проверить свой API, используя http://localhost:8080/somepath, я получаю 401 несанкционированный.Но когда я пробую ту же самую конечную точку с токеном, это работает, что означает, что аутентификация не была успешно отключена.Буду признателен за любую помощь здесь.

1 Ответ

1 голос
/ 03 мая 2019
  1. Измените порядок приведенных ниже операторов.
  2. В первом утверждении вы запрашиваете аутентификацию для любого запроса (всего запроса)
  3. Затем вы фильтруетезапросы с шаблоном ("/ somepath /"), который не имеет отношения к первому выполненному утверждению.

        .anyRequest().authenticated()
        .antMatchers("/somepath/").permitAll()
    
  4. Удалить оператор ниже.При использовании allowAll это означает каждого аутентифицированного пользователя, однако вы отключили анонимный доступ, чтобы он не работал.

            .anonymous().disable()
    

Поэтому используйте приведенную ниже функцию настройки с измененным порядком, которая должна решить эту проблему.

public void configure(WebSecurity web) throws Exception {

            web.ignoring().antMatchers("/somepath/")

    }

@Override
    protected void configure(HttpSecurity http) throws Exception {
    if(securityEnabled) {
        http
                .csrf().disable()  
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers("/somepath/").permitAll()
                .anyRequest().authenticated()
                .and()
                .httpBasic()


                .exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...