API REST em Spring Boot para cadastro de usuários e autenticação JWT. A implementação atual é uma base segura para fluxos financeiros; ela ainda não processa transferências, pagamentos ou saldos reais.
- JWT assinado com HMAC-SHA-256, emissor validado e validade de 15 minutos.
POST /userePOST /auth/loginsão públicos; todas as outras rotas exigem Bearer token.- Senhas usam BCrypt com custo 12 e nunca aparecem em respostas.
- E-mail é normalizado, validado e protegido por constraint única no banco.
- Flyway controla o schema; Hibernate somente valida o modelo.
- Cadastro e login têm limite local de tentativas. Em produção, mantenha também rate limiting no gateway/ingress, pois o limite em memória não é compartilhado entre réplicas.
| Método | Rota | Autenticação | Descrição |
|---|---|---|---|
POST |
/user |
Não | Cria um usuário. Retorna 201 sem senha. |
POST |
/auth/login |
Não | Recebe e-mail e senha; retorna accessToken. |
GET |
/user/me |
Bearer JWT | Retorna o usuário autenticado. |
- Copie
apidepagamentos/payment-system/.env.examplepara um arquivo.envfora do Git e substitua todos os valores de exemplo. GereJWT_SECRETcomopenssl rand -base64 32. - Inicie o MySQL de desenvolvimento com Docker Compose, se desejar:
cd apidepagamentos/payment-system
docker compose --env-file .env up -d- Exporte as variáveis para o processo Java e execute o perfil de desenvolvimento:
cd apidepagamentos/payment-system
set -a; source .env; set +a
SPRING_PROFILES_ACTIVE=dev ./mvnw spring-boot:runO banco deve aceitar conexões TLS conforme a URL DB_URL. Não use as configurações de desenvolvimento para produção: forneça DB_URL, DB_USERNAME, DB_PASSWORD e JWT_SECRET pelo gerenciador de segredos da plataforma.
curl -X POST http://localhost:8080/user \
-H 'Content-Type: application/json' \
-d '{"name":"Ana Silva","email":"ana@example.com","password":"very-secure-password"}'
curl -X POST http://localhost:8080/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"ana@example.com","password":"very-secure-password"}'Use o accessToken devolvido no cabeçalho Authorization: Bearer <token> para chamar /user/me.
cd apidepagamentos/payment-system
./mvnw clean testOs testes unitários cobrem o serviço de usuário e o JWT. Os testes de integração usam H2, Flyway e MockMvc para validar cadastro, login, autorização, token inválido e validações de entrada.