1

Я работаю с Spring MVC и Spring для своих контроллеров REST и документации. Я хотел бы защитить три различных пути:Весенняя безопасность для контроллеров REST

  • "/ API/**"
  • "/ API-документы"
  • «/ апи-документация»

Очевидно, что этот код работает только для последнего: «/ api-documentation». Я также пробовал antMatchers («/ api/**», «/ api-docs», «/ api-documentation»), но я не знаю, как настроить это правильно. Любые идеи?

http 
    .csrf().disable() 
    .exceptionHandling().authenticationEntryPoint(entryPoint()) 
    .and()     
    .antMatcher("/api/**")    
    .antMatcher("/api-docs") 
    .antMatcher("/api-documentation") 
    .authorizeRequests() 
    .anyRequest().hasRole("REST") 
    .and() 
    .httpBasic(); 

ответ

0

Для этого сценария просто необходимо было изменить антемачер на .antMatcher("/api*"), удалив остальные два.

0

Вы должны указать, кто может получить доступ к указанному пути:

.antMatchers("/api/**").permitAll() 
.antMatchers("/api-docs").hasRole("ADMIN") 
+0

Спасибо, но это моя проблема. Только эти три пути должны быть аутентифицированы с помощью роли «REST». – crm86

+0

Скажет, что вам нужно аутентифицировать каждый запрос anyRequest(). Authenticated() и добавить попытку добавить hasRole для каждого пути. – wsl

0

Вот некоторые пути согласования предложений.

"/api/**" будет соответствовать всем методам, как /api/x/y.

"/api-docs" будет соответствовать только /api-docs. Аналогично /api-documentation.

Если вы добавите "/api-docs/*" Будет отображено /api-docs/x.

someusefulresources на муравьиных узорах.

Поэтому что-то подобное,

http 
.csrf().disable() 
.exceptionHandling().authenticationEntryPoint(entryPoint()) 
.and()     
.antMatchers("/api/**","/api-docs","/api-documentation") 
.authorizeRequests() 
.anyRequest().hasRole("REST") 
.and() 
.httpBasic(); 

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

+0

Спасибо, но .antMatcher ("/ api/**", "/ api-docs", "/ api-documentation") является недопустимой операцией. – crm86

+0

@ crm86 Sry для этого, я отредактировал сообщение. Попробуйте сейчас. –

+0

Привет @maleenc, я суетился, что это не грамматическая проблема. Проблема в том, что я не могу выполнить эту операцию. (antMatchers). Спасибо, я буду использовать это: .antMatcher ("/ api *") – crm86

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