Security со Spring Boot 3.1 | Авторизация и Аутентификация

YOUTUBE · 01.12.2025 09:34

Ключевые темы и таймкоды

Введение и создание проекта

0:00
  • Реализация базовой системы безопасности Spring Security с использованием Spring Boot 3.1.
  • Создание проекта через Spring Initializer или среду разработки.
  • Настройка зависимостей: Spring Web, Security и Ломбок.

Модель приложения

0:49
  • Приложение состоит из ID, имени автора и версии.
  • Добавление аннотаций @Data и @Builder.

Сервис для работы с приложениями

1:20
  • Создание сервиса AppService для логики работы с приложениями.
  • Метод для загрузки 100 случайных приложений в базу данных.
  • Использование библиотеки JavaFaker для генерации случайных данных.

Методы сервиса

3:21
  • Метод для возврата полного списка приложений.
  • Метод для возврата приложения по идентификатору.
  • Проверка идентификаторов приложений в коллекции.

Контроллер и контрольные точки

6:47
  • Создание контроллера с аннотацией @RestController.
  • Реализация контрольных точек: welcome, list, getByID.
  • Тестирование приложения и проверка работы контрольных точек.

Настройка безопасности

10:33
  • Настройка пользователя и пароля в application.properties.
  • Создание конфигурационного файла для настройки Spring Security.
  • Использование @EnableWebSecurity для применения глобальной безопасности.

Создание пользователей

12:16
  • Создание пользователей с помощью UserDetailsService и PasswordEncoder.
  • Шифрование паролей для обеспечения безопасности.
  • Управление пользователями через InMemoryUserDetailsManager.

Проверка безопасности

15:11
  • Проверка входа под разными пользователями.
  • Проблема с незашифрованным паролем и её решение.
  • Подчёркивание важности шифрования паролей для корректной работы системы.

Настройка доступа к контрольным точкам

16:25
  • Создание метода publicSecurityFilterChain для настройки фильтров в Spring Security.
  • Отключение защиты от CSRF атак для тестирования.
  • Настройка доступа к контрольным точкам: «welcome» доступна всем, остальные — только для зарегистрированных пользователей.

Тестирование доступа

19:15
  • Проверка доступа к «welcome» без регистрации.
  • Регистрация пользователя для доступа к другим ресурсам.
  • Использование аннотации @PreAuthorize для управления доступом по ролям.

Добавление ролей пользователям

20:51
  • Создание ролей «юзер» и «админ» в билдере.
  • Включение аннотации @EnableMethodSecurity для моделирования авторизации на уровне метода.
  • Перезапуск приложения и проверка доступа с разными ролями.

Создание класса пользователя и репозитория

23:05
  • Подключение Spring Data JPA и драйвера для базы данных PostgreSQL.
  • Создание класса User с идентификатором, именем, паролем и ролями.
  • Реализация репозитория для работы с пользователями.

Реализация UserDetailsService

26:03
  • Создание UserDetailsService для загрузки пользователя по имени.
  • Реализация методов UserDetails для возврата информации о пользователе.
  • Проверка срока действия учётной записи, блокировки пользователя и актуальности пароля.

Создание эндпойнта для создания пользователя

30:59
  • Создание POST-метода для добавления нового пользователя.
  • Настройка доступа к эндпойнту для всех пользователей.
  • Тестирование добавления пользователей через Postman.

Настройка аутентификационного провайдера

34:10
  • Объяснение роли аутентификационного провайдера в подтверждении личности пользователя.
  • Создание бина для возврата провайдера в SecurityConfig.
  • Настройка провайдера с использованием UserDetailsService и PasswordEncoder.

Использование провайдера и паспорта-инкодера

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

Ошибка и исправление

35:52
  • Обнаруживаем ошибку: перед сохранением пользователя нужно закодировать его пароль.
  • Внедряем паспорт-инкодер в сервис.

Кодирование пароля

36:14
  • Используем паспорт-инкодер в методе добавления пользователя.
  • Пересоздаём всех пользователей.

Проверка базы данных

36:41
  • Пароли хранятся в незащищённом виде.
  • Запускаем нового админа с ролью «админ».

Обновление пользователей

36:54
  • Обновляем пароли для админа и юзера.
  • Создаём пользователя с двумя ролями.

Проверка аутентификации

37:18
  • Все пользователи сохранены в правильном виде.
  • Проверяем контрольные точки: приложения доступны.

Заключение

38:04
  • Подчёркивается суть аутентификации: проверка верности ввода пользователя и пароля.
  • Упоминается базовая реализация аутентификации и авторизации в Sprint Boot 3.1.
  • Анонсируется видео о создании приложения без Spring Boot, доступное подписчикам.