API REST em Java com Spring Boot, Spring Security, autenticação com JWT, envio de e-mails e recuperação de senha.
- Java 17
- Spring Boot
- Spring Security
- Spring Data JPA
- Spring Mail
- JWT
- Maven
- Java 17+
- Maven 3.9+
- Banco de dados configurado em
src/main/resources/application.properties
Propriedades relevantes em application.properties:
- Configuração SMTP:
spring.mail.host,spring.mail.portspring.mail.username, // usuário do e-mailspring.mail.password// senha de app do e-mailspring.mail.properties.mail.smtp.auth= truespring.mail.properties.mail.smtp.starttls.enable= true
Senhas são codificadas com BCrypt.
- Via Maven:
mvn spring-boot:run - Build:
mvn clean package - JAR:
java -jar target/<seu-jar>.jar
- Obtenha um JWT em
POST /api/v1/auth/login - Envie o token no header:
Authorization: Bearer <token>
Rotas públicas:
-
POST /api/v1/users/register- cadastra usuário- Body exemplo:
{ "username": "alice", "email": "alice@example.com", "password": "S3nh@Fort3!" } - A senha deve ter: 8+ chars, maiúscula, minúscula, dígito e caractere especial.
- Body exemplo:
-
POST /api/v1/auth/login- autentica e retorna JWT- Body:
{ "username": "alice", "password": "S3nh@Fort3!" } - Resposta esperada: JWT no corpo ou header (conforme implementação do serviço).
- Body:
-
POST /api/v1/auth/request-reset-password- envia e-mail de recuperação- Body:
{ "email": "alice@example.com" }
- Body:
-
POST /api/v1/auth/reset-password- redefine a senha- Body:
{ "token": "<token recebido por e-mail>", "newPassword": "Nov@S3nh4!" }
- Body: