API de autenticação desenvolvida com Spring Boot que implementa JWT Authentication com Access Token e Refresh Token, seguindo boas práticas de segurança e arquitetura backend.
O projeto também utiliza Docker para containerização da aplicação e do banco de dados MySQL, permitindo subir todo o ambiente com um único comando.
- Java 17
- Spring Boot
- Spring Security
- JWT (JSON Web Token)
- MySQL
- Docker
- Docker Compose
- Maven
- Registro de usuários
- Autenticação com login
- Geração de Access Token
- Geração de Refresh Token
- Renovação de Access Token com Refresh Token
- Proteção de endpoints com Spring Security
- Persistência de usuários no banco de dados
- API totalmente containerizada com Docker
User Login
↓
Access Token (curta duração)
Refresh Token (longa duração)
↓
Access Token expira
↓
POST /auth/refresh
↓
Novo Access Token
auth-api
│
├── src/main/java
│ ├── admin
│ ├── auth
│ ├── config
│ ├── dto
│ ├── exception
│ ├── security
│ └── user
│
├── Dockerfile
├── docker-compose.yml
└── pom.xml
git clone https://github.com/fxxggah/spring-auth-api
cd auth-apidocker compose up --buildIsso iniciará automaticamente:
- API Spring Boot
- Banco de dados MySQL
http://localhost:8080
O banco utilizado é MySQL, configurado automaticamente via Docker Compose. Configuração padrão:
- Database: auth_db
- User: root
- Password: root
- Port: 3306
POST /auth/register
Body
{
"name": "Gabriel",
"email": "gabriel@email.com",
"password": "123456"
}POST /auth/login
Body
{
"email": "gabriel@email.com",
"password": "123456"
}Response
{
"accessToken": "...",
"refreshToken": "..."
}POST /auth/refresh
Body
{
"refreshToken": "..."
}Response
{
"accessToken": "novo_access_token",
"refreshToken": "refresh_token"
}Para acessar endpoints protegidos envie o Access Token no header:
Authorization: Bearer seu_tokenEste projeto demonstra conceitos importantes de backend:
- Implementação de JWT Authentication
- Uso de Refresh Tokens
- Segurança com Spring Security
- Containerização de aplicações com Docker
- Orquestração de containers com Docker Compose
- Comunicação entre containers
- Persistência com MySQL
Desenvolvido por Gabriel Oliveira Projeto criado para estudo de Desenvolvimento Backend, APIs seguras e containerização de aplicações.