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 é:
- 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. -
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.
-
-
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.
-
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.
-
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.