Видео охватывает все аспекты работы с Jat с использованием Spring Boot 3 и Spring Security.
Курс был перезаписан из-за задержек в предыдущем курсе.
Видео предлагает компания EllaBu, которая руководила Spring Security.
Исходный код и описание видео доступны для использования.
Вопросы по Jat можно задавать в сообществе.
Клиент отправляет запрос на сервер.
Серверная система работает на встроенном сервере Apache Tomcat.
Фильтр аутентификации Jat выполняется первым для каждого запроса.
Проверка наличия токена Jat.
Если токен отсутствует, возвращается ответ 403.
Если токен есть, начинается процесс проверки.
Фильтр вызывает службу сведений о пользователе.
Используется электронное письмо пользователя для получения информации из базы данных.
Если пользователь не существует, возвращается 403.
Проверка токена на основе пользователя.
Если токен не действителен, возвращается 403.
В противном случае устанавливается владелец контекста безопасности.
Создание нового проекта Spring Boot.
Использование последней версии Spring Boot 3.0.1.
Добавление зависимостей для работы с базой данных и Jat.
Использование Postgre SQL в качестве базы данных.
Настройка источника данных в Spring Boot.
Создание новой базы данных и таблицы.
Настройка свойств приложения для подключения к базе данных.
Указание URL-адреса строки подключения и имени пользователя с паролем.
Предоставление других свойств для работы с базой данных.
При запуске приложения создается новая база данных и схема.
При остановке приложения все данные уничтожаются.
Важно начинать с пустой базы данных.
Настройка гибернации для отображения запросов.
Определение используемой базы данных и платформы.
Указание имени класса драйвера для лучшей совместимости.
Создание класса пользователя с полями: идентификатор, имя, адрес электронной почты, пароль.
Добавление аннотаций для геттеров, сеттеров, конструкторов и шаблонов проектирования.
Добавление аннотации @Entity для создания сущности.
Указание имени таблицы с помощью аннотации @Table.
Добавление первичного ключа и стратегии генерации идентификаторов.
Запуск приложения и проверка создания таблицы пользователей.
Проверка наличия таблицы в базе данных.
Использование интерфейса UserDetails для упрощения работы с Spring Security.
Реализация интерфейса UserDetails в классе пользователя.
Переопределение методов для работы с Spring Security.
Обзор методов интерфейса UserDetails.
Интерфейс пользователя включает изменяемый пульс, сведения о пользователе и класс User.
Основные сведения о пользователе содержат имя пользователя, пароль и логические значения срока действия учетной записи.
Эти атрибуты используются для авторизации и аутентификации.
Пользовательский интерфейс можно реализовать в классе User или создать собственный класс User.
Автор предпочитает создавать собственный класс User для контроля над объектом.
Метод getRoles возвращает список ролей.
Создается класс Role с двумя ролями: пользователь и администратор.
Роль должна быть перечислением с аннотацией @Enumerated.
Имя пользователя и срок действия учетной записи должны быть проверены.
Метод getPassword переопределяется для корректного отображения пароля.
Репозиторий отвечает за взаимодействие с базой данных.
Создается интерфейс UserRepository, который расширяет интерфейс Repository.
Метод findByEmail используется для поиска пользователя по электронной почте.
Фильтр аутентификации перехватывает каждый запрос.
Класс фильтра аутентификации расширяет класс FilterOneForEachRequest.
Метод filter имеет параметры запроса, ответа и цепочки фильтров.
Фильтр аннотируется для управления Spring.
Используется аннотация @Component и требуемый конструктор для создания конструктора с полями.
Фильтр готов к использованию и внедряется поэтапно.
Проверка наличия токена JWT в заголовке запроса.
Создание переменной для хранения токена JWT.
Проверка заголовка на наличие токена JWT и его формата.
Извлечение токена JWT из заголовка запроса.
Создание подстроки токена JWT.
Проверка наличия пользователя в базе данных.
Извлечение имени пользователя из токена JWT.
Создание класса для манипуляции токеном JWT.
Реализация метода для извлечения имени пользователя.
Добавление зависимостей для работы с токенами JWT.
Обновление файла pom.xml для добавления новых зависимостей.
Перезагрузка проекта для добавления зависимостей в путь к классу.
Объяснение структуры токена JWT.
Заголовок, полезная нагрузка и подпись токена.
Типы утверждений: публичные, частные и зарегистрированные.
Извлечение утверждений из токена JWT.
Создание метода для извлечения всех утверждений.
Использование конструктора для создания объекта токена JWT.
Анализ токена JWT с использованием ключа подписи.
Вызов метода для получения всех утверждений.
Получение утверждений из токена JWT.
Ключ подписи используется для цифровой подписи JWT.
Он помогает проверить, что отправитель JWT является тем, за кого себя выдает.
Ключ подписи работает в сочетании с алгоритмом входа для создания подписи.
Для генерации ключа подписи можно использовать онлайн-инструменты.
Минимальный размер ключа для JWT составляет 256 бит.
В коде ключ можно хранить в свойствах приложения.
Метод должен возвращать ключ, а не байт.
Используется метод декодирования Base64.
Метод возвращает ключ, декодированный с помощью алгоритма SHA256.
Метод извлекает все утверждения из JWT.
Возвращает функцию, которая распознает утверждения.
Утверждения включают имя пользователя и другие данные.
Метод генерирует JWT с дополнительными утверждениями и данными пользователя.
Включает имя пользователя и дату создания.
Подписывает JWT с помощью ключа подписи и алгоритма SHA256.
Метод проверяет, является ли JWT допустимым.
Принимает JWT и данные пользователя.
Проверяет, совпадает ли имя пользователя и срок действия JWT.
Создание метода для проверки срока действия токена.
Использование метода extractExpirationDate для извлечения даты истечения срока действия.
Проверка, истек ли срок действия токена, и обработка результатов.
Извлечение имени пользователя из токена JWT.
Проверка, не является ли адрес электронной почты пользователя пустым.
Проверка, аутентифицирован ли пользователь, и обработка результатов.
Создание объекта UserDetails для получения пользователя из базы данных.
Реализация метода загрузки пользователя по имени пользователя.
Внедрение компонента UserDetailsService для использования в Spring.
Проверка действительности токена JWT.
Обновление контекста безопасности при успешной аутентификации.
Создание объекта UserNameTokenAuthentication для обновления контекста безопасности.
Получение данных пользователя из базы данных при отсутствии аутентификации.
Проверка действительности пользователя и создание токена аутентификации.
Обновление контекста безопасности и вызов цепочки фильтров.
Создание нового класса конфигурации для привязки фильтра аутентификации.
Указание Spring на использование созданной конфигурации для работы фильтра.
Создание класса конфигурации безопасности.
Добавление аннотаций для веб-безопасности и конструктора Args.
Создание цепочки фильтров безопасности.
Настройка белого списка для конечных точек, не требующих аутентификации.
Использование метода authorizeRequest для авторизации запросов.
Разрешение всех запросов в белом списке и аутентификация остальных.
Настройка безстатусного сеанса для каждого запроса.
Использование политики создания сессий без состояния.
Указание поставщика аутентификации и фильтра Jwt.
Создание поставщика аутентификации и внедрение его в приложение.
Указание службы сведений о пользователе и кодировщика паролей.
Создание метода для получения провайдера аутентификации.
Создание менеджера аутентификации для управления аутентификацией.
Указание конфигурации аутентификации и исключение в сигнатуре метода.
Завершение конфигурации безопасности для приложения.
Создание контроллера аутентификации с двумя конечными точками.
Аннотирование контроллера с помощью @RestController и @RequestMapping.
Добавление конструктора Args для контроллера.
Создание двух конечных точек: одна для регистрации, другая для аутентификации.
Создание метода для регистрации с телом запроса, содержащим регистрационную информацию.
Создание метода для аутентификации с телом запроса, содержащим имя пользователя и пароль.
Создание класса для ответа на аутентификацию, содержащего токен.
Добавление аннотаций и конструктора для класса.
Создание класса для запроса на регистрацию с атрибутами имя, фамилия, адрес электронной почты и пароль.
Добавление аннотаций для класса.
Создание класса для запроса на аутентификацию с атрибутами имя пользователя и пароль.
Добавление аннотаций для класса.
Создание класса службы аутентификации с методами для регистрации и аутентификации.
Делегирование методов службе аутентификации.
Внедрение репозиториев и создание объекта пользователя из запроса на регистрацию.
Кодирование пароля и сохранение пользователя в базе данных.
Генерация токена и возврат ответа на аутентификацию.
Создание менеджера аутентификации и метода для аутентификации пользователя.
Проверка имени пользователя и пароля и генерация токена при успешной аутентификации.
Настройка белого списка для авторизации методов контроллера аутентификации.
Создание демонстрационного контроллера для тестирования.
Запуск приложения и проверка работы кода.
Тестирование конечной точки с помощью Postman.
Использование конечной точки в запросе GET.
Проверка авторизации и получение ответа 403 Forbidden.
Конечная точка должна быть защищена.
Две конечные точки: аутентификация и регистрация.
Проверка отсутствия пользователя в базе данных.
Получение ответа 403 при попытке аутентификации несуществующего пользователя.
Регистрация нового пользователя с именем и паролем.
Получение токена и его расшифровка.
Проверка токена на веб-сайте Jadata.
Проверка срока действия токена.
Тестирование аутентификации с правильным и неправильным паролем.
Получение токена при правильном пароле.
Вставка токена в запрос для авторизации.
Получение сообщения "Привет от защищенной конечной точки".
Проверка всех данных пользователя и токена.
Подведение итогов реализации Jad с Spring Boot 3 и Spring Security.
Призыв подписаться на канал для получения дополнительного контента.