Fluxo de Autenticação
sequenceDiagram
participant U as Usuário
participant A as API
participant DB as Banco de Dados
participant S as Sistema de Segurança
U->>A: Solicita token (/api/v1/auth/token)
A->>DB: Busca usuário por email
DB-->>A: Retorna dados do usuário
A->>S: Verifica senha
S-->>A: Confirma autenticidade
A->>S: Gera token JWT
S-->>A: Retorna token JWT
A-->>U: Retorna token JWT
Note over U,A: Token válido por 30 minutos
U->>A: Acessa recurso protegido (com token)
A->>S: Verifica validade do token
S-->>A: Token válido, retorna dados do usuário
A->>DB: Verifica permissões (se aplicável)
DB-->>A: Confirma permissões
A-->>U: Retorna recurso solicitado
U->>A: Solicita refresh de token
A->>S: Verifica token atual
S-->>A: Token ainda válido
A->>S: Gera novo token JWT
S-->>A: Retorna novo token JWT
A-->>U: Retorna novo token JWT
Descrição do Fluxo
1. Autenticação Inicial
- O usuário envia credenciais (email e senha) para o endpoint
/api/v1/auth/token
- A API busca o usuário correspondente no banco de dados pelo email
- O sistema de segurança verifica se a senha fornecida corresponde ao hash armazenado
- Se as credenciais estiverem corretas, um token JWT é gerado e retornado ao usuário
2. Acesso a Recursos Protegidos
- O usuário inclui o token JWT no cabeçalho de autorização para acessar recursos protegidos
- A API verifica a validade do token JWT
- Se o token for válido, a identidade do usuário é extraída do token
- A API verifica se o usuário tem permissões para acessar o recurso solicitado
- Se as permissões forem válidas, o recurso é retornado ao usuário
3. Renovação de Token
- O usuário pode solicitar um novo token antes que o atual expire
- A API verifica se o token atual ainda é válido
- Um novo token JWT é gerado e retornado ao usuário
Segurança do Fluxo
- Tokens JWT: Autenticação stateless baseada em tokens assinados
- Tempo de Expiração: Tokens expiram após 30 minutos por padrão
- Hashing de Senhas: Senhas são comparadas usando Argon2, um algoritmo resistente a ataques
- Validação Contínua: Cada requisição a recursos protegidos é validada novamente
- Proteção contra Reuso: Tokens expirados não podem ser reutilizados
Componentes Envolvidos
- Usuário: Entidade que deseja acessar recursos protegidos
- API: Responsável por coordenar o processo de autenticação e autorização
- Banco de Dados: Armazena credenciais e informações do usuário
- Sistema de Segurança: Implementa a lógica de verificação de credenciais e geração de tokens