Spring Security — это инфраструктура, которая обеспечивает аутентификацию и авторизацию для приложений Java.
Аутентификация используется для подтверждения личности пользователя, а авторизация проверяет привилегии и права пользователя, которые определяют, к каким ресурсам и действиям он имеет доступ в приложении.
Здесь мы напишем простой REST-контроллер, сервис приветствия, который желает вам доброго утра, когда вы переходите на локальный хост: 7000 / утро. Посмотрим, как он работает с зависимостями безопасности и без них.
Мы начнем с создания весеннего загрузочного проекта со следующими зависимостями.
XML
xxxxxxxxxx
1
<dependency>
2
<groupId>org.springframework.boot</groupId>
3
<artifactId>spring-boot-starter-security</artifactId>
4
</dependency>
5
<dependency>
6
<groupId>org.springframework.boot</groupId>
7
<artifactId>spring-boot-starter-web</artifactId>
8
</dependency>
Теперь мы создадим простой REST-контроллер с надписью «Доброе утро».
Джава
xxxxxxxxxx
1
2
public class GreetingsController {
3
"/morning") (
5
public String getGreetings() {
6
return "Good Morning";
7
}
8
}
Давайте обновим файл application.properties
Простой текст
xxxxxxxxxx
1
server.port=7000
Вам также может понравиться:
Руководство для начинающих OAuth 2.0 .
Теперь, если вы запустите приложение и перейдете на localhost: 7000 / morning, вы увидите экран входа в систему, как показано ниже:
Когда вы запустите приложение, в консоли будет сгенерирован пароль безопасности. Вы можете скопировать и вставить его. Имя пользователя по умолчанию - «пользователь», и пароль можно скопировать из консоли.
Это приведет вас к странице с надписью «Доброе утро».
Теперь, если вы закомментируете зависимость безопасности и запустите приложение, вы попадете прямо на страницу, которая желает вам «Доброе утро».
Это дает вам представление о том, что Spring Security может помочь вам защитить ваше приложение. Теперь давайте переопределим имя пользователя и пароль безопасности по умолчанию.
Один из способов сделать это - создать файл application.properties , как показано ниже:
Файлы свойств
xxxxxxxxxx
1
server.port=7000
2
spring.security.user.name=hello
3
spring.security.user.password=world
Теперь вы можете запустить приложение. Убедитесь, что вы раскомментировали зависимости безопасности в файле POM.
Вы попадете на тот же экран входа в систему, что и выше, и вы можете ввести «привет» в качестве имени пользователя и «мир» в качестве пароля. Теперь вас встретит «Доброе утро».
Еще один способ сделать это с помощью кода Java. Давайте закомментируем последние две строки в файле application.properties , как показано ниже:
Файлы свойств
xxxxxxxxxx
1
server.port=7000
2
#spring.security.user.name=hello
3
#spring.security.user.password=world
Теперь давайте напишем некоторый код. Это потребует от вас автоматической передачи пароля. Я использую кодировщик паролей Bcrypt. Когда мы пытаемся запустить приложение с @Autowire
паролем, мы получаем ошибку. Мы должны определить бин для кодировщика паролей. Вы также можете использовать NoOpPasswordEncoder
, который устарел. Посмотрите на код ниже:
Джава
xxxxxxxxxx
1
2
public class SecurityConfig extends WebSecurityConfigurerAdapter {
3
4
private PasswordEncoder passwordEncoder;
5
7
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
8
auth.inMemoryAuthentication()
9
.withUser("user").
10
// password("user").
11
// roles("USER");
12
password(passwordEncoder.encode( "user")).roles("USER");
13
}
14
15
public PasswordEncoder passwordEncoder() {
16
return new BCryptPasswordEncoder();
17
}
18
// @Bean
19
// public PasswordEncoder passwordEncoder() {
20
// return NoOpPasswordEncoder.getInstance();
21
// }
22
}
23
При использовании NoOpPasswordEncoder
вам не требуется кодировщик для пароля.
Теперь, запустив это приложение, вы попадете на тот же экран входа в систему, где вы можете ввести имя пользователя как «пользователь» и пароль как «пользователь». Вас встретит «Доброе утро».
Вы можете найти полный исходный код по адресу https://github.com/gudpick/security-demo .
Вы можете найти видеоурок по адресу https://youtu.be/e-9rPnlHWL8 .