До сих пор в наших предыдущих публикациях наши конечные точки и контроллеры были защищены с использованием стандартной конфигурации безопасности Spring.
Когда Spring Security находится на пути к классам, автоконфигурация защищает все конечные точки по умолчанию.
Когда речь идет о сложных приложениях, нам нужны разные политики безопасности для конечных точек. Нам необходимо настроить, какие конечные точки должны быть защищены, какие типы пользователей должны иметь доступ к конечным точкам и конечным точкам, которые должны быть общедоступными.
Отличным примером будет конечная точка, которая будет отображать приветственное сообщение для пользователя.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
package com.gkatzioura.security.securityendpoints.controller; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { @GetMapping (path = "welcome" ) public String getMessage() { return "Welcome to the application" ; } } |
В связи с тем, что ваше приложение уже защищено, вам необходимо предоставить публичный доступ к этой конечной точке.
Для этого Spring предоставляет нам класс HttpSecurity . Расширяя WebSecurityConfigurerAdapter
мы можем настроить конечные точки, которые должны быть защищены, и конечную точку, которая должна быть общедоступной.
Итак, давайте создадим конфигурацию WebSecurityConfigurerAdapter
.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package com.gkatzioura.security.securityendpoints.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers( "/welcome" ).permitAll() .anyRequest().authenticated() .and() .formLogin() .permitAll() .and() .logout() .permitAll(); } } |
Итак, давайте разберем его по частям, вызвав функцию authorizeRequests
. Мы получаем конфигуратор http, и можно добавить конечные точки, которые мы хотим сделать общедоступными или безопасными.
antMatchers
функцию antMatchers
мы можем передать массив шаблонов ant. Применяемая функция создаст правило для каждой конечной точки, указанной в antmatchers.
Следующая функция — anyRequest
. Аутентифицированное правило будет применяться к любому полученному запросу.
И последнее, но не менее важное: в комплект поставки входит форма входа по умолчанию и конечная точка выхода по умолчанию. Чтобы сделать возможным вход в систему и выход из нее, мы должны разрешить доступ к этим конечным точкам.
Таким образом, конечным результатом будет общедоступная конечная точка приветствия, предварительно настроенная форма для входа в систему и конечная точка выхода из системы.
Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. См. Оригинальную статью здесь: Spring Security с Spring Boot 2.0: защита ваших конечных точек
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |