Введение и создание проекта 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, доступное подписчикам.