Конфигурация HttpSecurity Spring Boot - PullRequest
0 голосов
/ 27 октября 2018

Мне нужно настроить 3 конечных точки, 2 с аутентификацией и 1 без.Проблема в том, что я получаю все конечные точки с 401 несанкционированной ошибкой.

  • /users без проверки подлинности
  • /users/1 требуется проверка подлинности
  • /details/1нужна аутентификация

Я использую зависимость:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

И я реализовал класс:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
                .withUser("admin")
                    .password("pwd")
                    .roles("USER", "ADMIN");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
            .httpBasic()
                .and()
            .authorizeRequests()
                .antMatchers(HttpMethod.GET, "/users").hasAnyRole("ADMIN", "USER")
                .anyRequest().permitAll()
                .and()
            .authorizeRequests()
                .anyRequest().hasAnyRole("ADMIN", "USER");
    }
}

1 Ответ

0 голосов
/ 27 октября 2018

В соответствии с вашими требованиями вам просто необходима простая конфигурация http, где пользователи GET могут получить доступ для всех, как общедоступный URL-адрес, а другие нуждаются в базовой аутентификации. Ниже будет работать для вас.

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers(HttpMethod.GET, "/users").permitAll()
                .anyRequest().authenticated()
                .and()
                .httpBasic();

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