Skip to content

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

  1. O usuário envia credenciais (email e senha) para o endpoint /api/v1/auth/token
  2. A API busca o usuário correspondente no banco de dados pelo email
  3. O sistema de segurança verifica se a senha fornecida corresponde ao hash armazenado
  4. Se as credenciais estiverem corretas, um token JWT é gerado e retornado ao usuário

2. Acesso a Recursos Protegidos

  1. O usuário inclui o token JWT no cabeçalho de autorização para acessar recursos protegidos
  2. A API verifica a validade do token JWT
  3. Se o token for válido, a identidade do usuário é extraída do token
  4. A API verifica se o usuário tem permissões para acessar o recurso solicitado
  5. Se as permissões forem válidas, o recurso é retornado ao usuário

3. Renovação de Token

  1. O usuário pode solicitar um novo token antes que o atual expire
  2. A API verifica se o token atual ainda é válido
  3. 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