Этот проект предоставляет API для аутентификации и авторизации пользователей с использованием JWT (JSON Web Tokens).
- Регистрация и аутентификация пользователей
- Access и refresh JWT токены
- Ролевая модель авторизации (USER, ADMIN)
- Защищенные endpoints
Все токены в системе имеют стандартную JWT структуру:
header.payload.signature
eyJhbGciOiJIUzM4NCJ9.eyJyb2xlIjoiUk9MRV9VU0VSIiwiaWQiOjYsInR5cGUiOiJhY2Nlc3MiLCJlbWFpbCI6ImRpbWFAZ21haWwuY29tIiwic3ViIjoiRGltYXNpazEiLCJpYXQiOjE3NTY3MjI0NDQsImV4cCI6MTc1NjcyMzk0NH0.X8VJjVNk4TqPHQZf5p6nmcNqGhajaR1u01BiICJ6BshAcXmS1FB8Qt5v6Qpvactt
- Header (
eyJhbGciOiJIUzM4NCJ9) - алгоритм и тип токена - Payload (
eyJyb2xlIjoiUk9MRV9VU0VSIiwiaWQiOjYsInR5cGUiOiJhY2Nlc3MiLCJlbWFpbCI6ImRpbWFAZ21haWwuY29tIiwic3ViIjoiRGltYXNpazEiLCJpYXQiOjE3NTY3MjI0NDQsImV4cCI6MTc1NjcyMzk0NH0) - данные пользователя - Signature (
X8VJjVNk4TqPHQZf5p6nmcNqGhajaR1u01BiICJ6BshAcXmS1FB8Qt5v6Qpvactt) - электронная подпись
-
Клонируйте репозиторий:
git clone https://github.com/PlatovD/spring_boot_jwt.git
-
Настройте базу данных в
application.propertiesи не забудьте ее предварительно запустить:spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8db.url=jdbc:mysql://mysql:3306/resume?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=your_username spring.datasource.password=your_password
-
Запустите приложение:
mvn spring-boot:run
POST /auth/sign-up
Content-Type: application/json
{
"name": "Dima",
"email": "dima@gmail.com",
"password": "my_1ecer10_pa66"
}POST /auth/sign-in
Content-Type: application/json
{
"name": "Dima",
"password": "my_1ecer10_pa66"
}POST /auth/refresh
Content-Type: application/json
{
"refresh": "eyJhbGciOiJIUzM4NCJ9.eyJ0eXBlIjoicmVmcmVzaCIsInN1YiI6IkRpbWFzaWsxIiwiaWF0IjoxNzU2NzIyNDQ0LCJleHAiOjE3NTkzMTQ0NDR9.9BjU56pQHE4YHDyTeG4uq4-GFhQcZ8tPgfLFZoM2bhyroKfAzREbv19goHYRzU_B"
}{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
}GET /
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...В application.properties:
jwt.duration.expiration.access=1500
jwt.duration.expiration.refresh=2592000
jwt.singing.key=yourkey