Este projeto é uma API RESTful desenvolvida com Java 21 e Spring Boot 4, focada na implementação de um fluxo completo de autenticação e autorização stateless utilizando JWT (JSON Web Tokens).
A aplicação utiliza um modelo de segurança baseado em filtros, onde cada requisição protegida deve carregar um token de acesso válido.
- Autenticação: Gerenciada pelo
AuthControllerviaPOST /auth/login, onde as credenciais são validadas peloAuthenticationManager. - Segurança: Configurada centralmente no
SecurityConfig, que define quais rotas são públicas ou protegidas. - Filtro Customizado: O
SecurityFilterintercepta cada requisição para validar o Token JWT presente no Header. - Geração de Token: O
TokenConfigutiliza o algoritmo HMAC256 para assinar tokens que expiram em aproximadamente 2 horas (8400 segundos). - Banco de Dados: Persistência realizada via Spring Data JPA com controle de migrações pelo Flyway.
- Proteção Multicamadas: Filtros de segurança customizados interceptam cada requisição antes mesmo de chegarem aos dados.
- Gestão de Identidade: Integração nativa com UserDetailsService para uma gestão de usuários flexível e segura.
- Deploy Ágil e Seguro: Versionamento de banco de dados via Flyway e containerização, garantindo que o ambiente de produção seja idêntico ao de desenvolvimento, evitando erros humanos no deploy.
As seguintes ferramentas foram utilizadas para construir este ecossistema:
- Java 21: Versão da linguagem utilizada.
- Spring Boot 4.0.2: Framework base da aplicação.
- Spring Security: Engine de proteção e controle de acesso.
- Java-JWT (Auth0): Biblioteca para criação e validação de tokens.
- Flyway & MySQL: Versionamento de esquema e driver de conexão para banco de dados.
- Lombok: Otimização de código e redução de boilerplate.
- Jakarta Validation: Validação de dados de entrada nos DTOs.
- Docker: Infraestrutura e dedicação de recursos.
git clone git@github.com:Ivictors/Spring-Security-Autentica-o-JWT.git