3

Я настроил Spring Security для моего REST API (с HeaderHttpSessionStrategy).Spring REST Security: включить базовую проверку подлинности только на определенной конечной точке

Реализация моей реализации «WebSecurityConfigurerAdapter» выглядит, как показано ниже.

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

     http 

      .csrf().disable() 

      .authorizeRequests() 
       .antMatchers("/user/**").authenticated() 
       .antMatchers("/**").permitAll() 

       .and() 
      .requestCache() 
       .requestCache(new NullRequestCache()) 
       .and() 

      .httpBasic() 
      ; 

    } 

Теперь, как я могу настроить «HttpSecurity» объект так, что базовая аутентификация возможна только с определенной конечной точки.

Например:

/пользователь/Войти: Базовая аутентификация должна быть возможна только на этом конце point.After аутентификации sucessfull х-AUTH-маркер заголовка возвращается.

/пользователь/создать: Клиент не должен иметь возможность аутентификации на этом endpoint.Should возвращать только 401.Can только получить доступ, используя «х-авторизации-маркер», созданный с помощью/пользователя/входа в конечную точку.

ответ

5

Вы можете определить несколько WebSecurityConfigurerAdapter с. Один из более высоких приоритетов, у которого есть запросчик для ограничения применимости к /user/login, например: http.requestMatcher(new AntPathRequestMatcher("/user/login")), а другой - как для всех остальных. Вы можете опустить requestMatcher, чтобы сделать определение http неограниченным.

0

Вы должны всегда определять ограничения с определенного на общий. В вашем случае это должны быть конкретные проверки URL-адресов для общих проверок безопасности.

  1. Вам необходимо настроить и разрешить URL-адреса для входа/регистрации.
  2. Вам следует избегать шаблона/**, чтобы разрешить все. вместо этого настройте URL статического ресурса отдельно.
  3. Вы должны, наконец, применить более общие ограничения, как указано в URL,/user/** для аутентификации и выполнения некоторых ролей.

    @Override 
        protected void configure(HttpSecurity http) throws Exception { 
    
    http 
    .csrf().disable() 
    .authorizeRequests() 
    .antMatchers("/user/login, /user/signup, /logout").permitAll() 
    .antMatchers("/user/**").hasRole("ADMIN") 
    .and() 
    .requestCache() 
    .requestCache(new NullRequestCache()) 
    .and() 
    
        .httpBasic(); 
    

    }

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

  • Нет связанных вопросов^_^