Se você está começando no mundo do desenvolvimento backend com Spring Boot, provavelmente já ouviu falar sobre autenticação com JWT (JSON Web Token). Neste artigo, vamos entender o que é JWT, por que ele é utilizado e qual é o fluxo de autenticação em uma aplicação moderna. Essa é a primeira parte de uma série prática onde vamos implementar uma solução completa de autenticação usando JWT no Spring Boot.
O que é JWT?
JWT significa JSON Web Token, um padrão aberto (RFC 7519) que define um formato compacto e seguro para a transmissão de informações entre partes como um objeto JSON.
Esse token contém três partes:
- Header: identifica o tipo do token e o algoritmo de assinatura.
- Payload: contém as “claims” (declarações), como o nome do usuário, roles, expiração, etc.
- Signature: assinatura digital que garante a integridade do token.
Um exemplo de token:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTY4Mjg3MjAwMCwiZXhwIjoxNjgyODc1NjAwfQ.y5eM3xKfE8apYtZ1YyZPrsGh54XbyrUjJg9UDeMD8qY
Por que usar JWT?
JWT é muito utilizado em aplicações REST porque:
- É stateless: o backend não precisa armazenar sessão no servidor.
- É seguro: pode ser assinado com algoritmo seguro (ex: HS256).
- É leve: pode ser transmitido via header HTTP.
Diferença entre Autenticação e Autorização
- Autenticação: verificar se o usuário é quem ele diz ser. Ex: login e senha.
- Autorização: verificar se o usuário tem permissão para acessar determinado recurso. Ex: admin pode deletar produtos.
Como funciona o fluxo com JWT
- O usuário envia seu login e senha para a API (
/auth/login
). - Se as credenciais forem válidas, a API gera um token JWT e devolve para o cliente.
- O cliente salva esse token (ex: localStorage) e envia nos próximos requests via
Authorization: Bearer <token>
. - O backend valida o token e autoriza ou não a requisição.
O que vamos construir?
Neste projeto com Spring Boot, vamos:
- Criar um endpoint de login que gera o JWT.
- Validar o token nas requisições.
- Proteger endpoints com
@PreAuthorize
e roles. - Testar tudo com o Postman.
Essa é uma abordagem moderna, utilizada em APIs REST, microserviços e integrações com frontend (como React, Angular ou Flutter).
Próximos passos
No próximo artigo, vamos começar a implementar a geração e validação de tokens com uma classe de serviço chamada JwtService
, que será responsável por assinar, extrair e validar os tokens da aplicação.
Continue acompanhando e aproveite para compartilhar com quem também está aprendendo!