Статьи

Spring Security с Spring Boot 2.0: простая аутентификация с использованием стека сервлетов

Spring security — это отличная среда, которая экономит много времени и усилий разработчиков. Также это достаточно гибко, чтобы настроить и свести его к вашим потребностям. По мере развития Spring безопасность Spring также требует упрощения и начальной загрузки для настройки безопасности в вашем проекте.

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

Мы можем использовать приложение Spring SPRING INITIALIZR .

Конечный результат проекта будет иметь проект с загрузочной пружиной 2 с Gradle.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
buildscript {
    ext {
        springBootVersion = '2.0.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
 
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
 
group = 'com.gkatzioura.security'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
 
repositories {
    mavenCentral()
}
 
 
dependencies {
    compile('org.springframework.boot:spring-boot-starter-security')
        compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.springframework.security:spring-security-test')
}

Теперь учтите, что с Spring Boot 2 есть два стека. Либо стек сервлетов, либо реактивный стек WebFlux. В этом уроке мы будем использовать стек сервлетов. Мы расскажем о WebFlux в другом уроке.

Давайте пойдем и добавим наш первый контроллер.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
package com.gkatzioura.security.simple.controller;
 
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class HelloWorldController {
 
    @GetMapping("/hello")
    public ResponseEntity<String> hello(String name) {
 
        return new ResponseEntity<>("Hello "+name, HttpStatus.OK);
    }
 
}

Если мы попытаемся получить доступ к конечной точке http: // localhost: 8080 / hello? Name = john, мы увидим экран входа в систему. Таким образом, включение зависимости безопасности в наш проект автоматически защищает наши конечные точки и настраивает пользователя с помощью пароля. Для того, чтобы восстановить пароль, вы можете проверить на экране входа в систему. Имя пользователя будет ‘user’, а пароль будет тем, который будет сгенерирован автоматически.

Конечно, использование автоматически сгенерированного пароля недостаточно, поэтому мы собираемся предоставить имя пользователя и пароль по нашему выбору.

Один из способов установить ваше имя пользователя и пароль в файле application.yaml

1
2
3
4
5
spring:
  security:
    user:
      name: test-user
      password: test-password

Теперь помещать ваши пароли в файловую систему, особенно когда они не зашифрованы, не очень хорошая практика, не говоря уже о том, чтобы загружать их в систему управления версиями, поскольку application.yaml является исходным файлом. Также любой, кто имеет доступ к двоичному файлу, может восстановить имя пользователя и пароль.

Поэтому вместо помещения этой конфиденциальной информации в файл application.yaml вы можете установить их, используя переменные среды.

Так что ваши переменные среды будут

1
2
SPRING_SECURITY_USER_NAME=test-user
SPRING_SECURITY_USER_PASSWORD=test-password

Подводя итог, это был самый простой и быстрый способ повысить безопасность вашего проекта. В следующем блоге мы сделаем то же самое, но с использованием реактивного стека WebFlux.

Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. См. Оригинальную статью здесь: Spring Security с Spring Boot 2.0: простая аутентификация с использованием стека сервлетов

Мнения, высказанные участниками Java Code Geeks, являются их собственными.