Skip to content

Autenticação

Glossário

  • Token temporário: um token de curta duração - 2 minutos - que representa o usuário recém logado;
  • Token JWT: um token com maior duração do que o token temporário e que permite acessar informações do usuário.

Fluxo

A sequência de eventos que permitem a correta autenticação é:

  1. O fluxo começa com o usuário fazendo o login na plataforma. Em caso de sucesso, a página será redirecionada de acordo com os parâmetros (conforme a documentação) adicionada de um parâmetro t representando um token temporário. Exemplo: https://seudominio.com.br/?t=TOKEN_TEMPORARIO.
  2. Em posse do token temporário, uma requisição à plataforma deve ser feito (preferencialmente no backend) ao endpoint api/jwt/.

    curl --location --request POST 'https://saas-builder.a.visie.link/api/jwt/?t=TOKEN_TEMPORARIO'

    Dois possíveis retornos:

    • Sucesso (status 200): { "access_token": "JWT_DO_USUARIO" }

    • Falha (status 400): { "message": "Invalid token" }

      • O erro pode ocorrer se o token não for encontrado ou se ele já expirou.
  3. Em posse do token JWT, armazene esta informação no navegador do usuário. A forma como isso será feito fica a critério do desenvolvedor, mas uma opção simples é definir o JWT como um cookie porque ele será enviado automaticamente junto às requisições feitas à aplicação.

  4. No backend da aplicação, use o JWT para verificar o usuário pode acessar determinado recurso. O token JWT é assinado usando um algoritmo assimétrico (RS256), onde é possível garantir a autenticidade do token através da verificação da assinatura usando a chave pública. Quando esta checagem passar, o conteúdo do token conterá:

    { "name": "Joao Silva", "email": "email@dominio.com", "initial_date": "2025-01-24T13:24:24.071966+00:00", "plan": 1, "plan_name": "Plano básico", "active": true, "next_due_date": "2025-02-24", "exp": 1738787911.079901 }

    • name (string): o nome completo do usuário preenchido pelo mesmo;
    • email (string): e-mail cadastrado pelo usuário;
    • initial_date (string): indicação de data e horário do momento quando o usuário se vinculou pela primeira vez à aplicação (login ou cadastro, por exemplo);
    • plan (inteiro): a ID do plano;
    • plan_name (string): o nome do plano (cadastrado pelo admin);
    • active (boolean): indica se a assinatura está ativa para o plano indicado na chave plan;
    • next_due_date (string): a data quando ocorrerá a próxima cobrança;
    • exp (float): timestamp indicando a expiração do token - padrão epoch.
  5. Com as informações contidas no token JWT, será possível verificar se o usuário possui uma assinatura vigente e qual plano ele possui vínculo. Dessa forma, será possível limitar os recursos que o usuário terá acesso de acordo com as informações extraídas do token.