До сих пор в наших предыдущих публикациях наши конечные точки и контроллеры были защищены с использованием стандартной конфигурации безопасности 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;@RestControllerpublic 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;@Configurationpublic 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, являются их собственными. |