springsecurity-jwt

0
README.md

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

Выполнено как задание в открытой школе T1:

Создать базовое веб-приложение с использованием Spring Security и JWT для аутентификации и авторизации пользователей.

Запуск

  • Клонировать проект
  • Скомпилировать
  • Запустить docker контейнеры
  • Все java приложения будут запущены в своих контейнерах

Детали реализации

Проект написан для Java 17. Использует Postgresql 16 и spring web и spring security

При регистрации и аутентификации получаем jwt access token и refresh token. Используя refresh token можно обновить access token по его истечению.

  • Реализованы эендпоинты для регистрации, аутентификации пользователей и обновлению access token через передачу refresh token. В файле api-docs.yaml содержится OpenApi спецификация реализованного API.
  • Реализованы открытый, закрытый аутентификацией и закрытый ролью admin тестовые эндпоинты

Тесты postman

В файле postman.json приложена простая коллекция для тестов:

  • В папке Manual лежат запросы ко всем используемым эндпоинтам для ручной проверки, где можно вручную создавать и передавать jwt токены
  • В папке Tests простые тесты с проводящие регистрацию, вход под тестовым пользователем и админом и проверка защищенных эндпоинтов

Полная задача

Задание: Реализация аутентификации и авторизации с использованием Spring Security и JWT Цель задания: Создать базовое веб-приложение с использованием Spring Security и JWT для аутентификации и авторизации пользователей. Шаги задания: Настройка проекта: Создайте новый проект Spring Boot. Настройка конфигурации безопасности: Настройте базовую конфигурацию Spring Security для вашего приложения. Используйте JWT для аутентификации пользователей. Создайте класс для генерации и проверки JWT токенов. Реализация контроллеров: Создайте контроллеры для аутентификации и регистрации пользователей. Реализуйте методы для создания нового пользователя и генерации JWT токена при успешной аутентификации. Реализуйте сохранение пользователей в базу данных PostgreSQL. Добавьте поддержку ролей пользователей и настройте авторизацию на основе ролей. Тестирование: Напишите модульные тесты для контроллеров и сервисов. Убедитесь, что аутентификация и авторизация работают корректно. Проверьте, что только аутентифицированные пользователи имеют доступ к защищенным ресурсам.