Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 20 Próxima »

O gerenciamento de tokens é um componente fundamental em sistemas que envolvem autenticação e autorização. Um token, nesse contexto, é uma representação de acesso, que pode ser usado para verificar a identidade do usuário e conceder permissões específicas. Eles desempenham um papel crucial na segurança e na eficiência das interações entre usuários e sistemas.

Tokens também podem ser utilizados para controlar sessões de usuário. Neste tutorial será apresentada uma solução para o gerenciamento de sessão de tokens no Cronapp, incluindo a validação desses tokens após login e logout do usuário.

Pré-requisitos

Antes de começar a seguir os passos do tutorial é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

  1. Projeto do tipo web e mobile criado. Caso haja dúvidas de como criar esse tipo de projeto, acesse a documentação Criar projeto;
  2. Utilizar as funcionalidades do diagrama, como criar classes e gerar persistência. Caso haja dúvidas, acesse a documentação Diagrama;
  3. Criar blocos de programação. Caso haja dúvidas, acesse a documentação Bloco de programação.

Passos

Configurando o diagrama

Vamos dar início ao nosso tutorial criando uma nova classe no diagrama de dados, que será utilizada para armazenar o ID do token, referente a um usuário, e sua validade, determinando se o token é válido ou não. Para começar, siga essas etapas: primeiro expanda o menu do tópico Diagrama de Dados e clique duas vezes no diretório app (destaque 1 da Figura 1).

Em seguida, crie uma classe, neste exemplo a nomeamos como Session, a qual deve conter dois atributos, id (Texto) e valid (Lógico), conforme a imagem abaixo. Após a criação da classe, gere a camada de persistência (destaque 2). 


Figura 1 - Classe Session no diagrama de dados

Criando os blocos de programação

Para o gerenciamento de sessão dos tokens durante o login e logout do usuário, é necessário criar algumas funções de blocos de programação do tipo servidor. Essas funções posteriormente serão adicionadas em alguns eventos do projeto. Inicialmente, criamos um arquivo blockly e atribuímos o nome "criarIdParaToken" à nossa primeira função (Figura 2). Essa função será responsável por adicionar um ID único ao token do usuário logado, para isso utilizamos os blocos Cria Identificador Universal e Definir Variável de Token da Requisição.

Em seguida, adicionamos o bloco Inserir no retorno da função. Esse bloco é responsável por salvar o ID do token do usuário logado na tabela Session do banco de dados, juntamente com a informação de validade do token. Para configurar esse bloco, clique no ícone de engrenagem e, na janela de configuração, selecione a entidade Session e seus campos correspondentes. Observe que no bloco, o atributo "valid" recebe o bloco valor booleano configurado com o valor "verdadeiro", identificando que o usuário estar autenticado, portanto seu token é válido. A função configurada deve estar como a imagem abaixo.


Figura 2 - Função para criar um ID único para o token do usuário


A segunda função, nomeada como "tornarTokenInvalido" (Figura 3), será executada após o logout do usuário e terá como objetivo invalidar o token do usuário, indicando que ele não está mais logado na aplicação. Para isto, utilizamos os blocos Obter Variável do Token da Requisição e Atualizar

Para configurar bloco Atualizar, clique no ícone da engrenagem e, na janela de configuração, selecione a entidade Session. Em seguida, adicione o atributo "valid" como novo campo e o atributo "id" como nova regra. O atributo "valid" deve ser definido como falso, indicando que o usuário não está mais autenticado na aplicação. Por fim, salve as modificações.


Figura 3 - Função para tornar inválido o token do usuário


A terceira e última função, "checarValidadeToken" (Figura 4), irá verificar a validade de um token nas requisições feitas. Nesta função, utilizamos o bloco condicional Se faça e o bloco Obter token da requisição para verificar a presença do token na requisição. Posteriormente, utilizando o bloco Obter Variável do Token da Requisição, obtemos o ID desse token.

Em seguida, realizamos uma consulta, por meio do bloco Abrir consulta, que deve ser configurado conforme a Figura 4.1, para verificar se o ID é valido ou não. Caso seja inválido, será lançada uma exceção, indicando que o token não poderá mais ser utilizado. Esta função também precisará retornar os permissionáveis ao final das validações necessárias, por isso criamos na função o parâmetro "roleName" e utilizamos outro bloco Abrir consulta no retorno da função com a entidade RoleSecurable, configure-o conforme a Figura 4.2. A função configurada deve estar como a imagem abaixo.


Figura 4 - Função para verificar a validade um token


A imagem a seguir exibe a configuração do bloco Abrir consulta configurado com a entidade Session.


Figura 4.1 - Configurando bloco Abrir Consulta para Session


A Figura 4.2 exibe a configuração do bloco Abrir consulta agora configurado com a entidade RoleSecurable. Adicione a entidade, o campo e uma nova regra, como mostrado na imagem. Para incluir os campos em destaque, clique na opção Novo Grupo (destaque 1).


Figura 4.2 - Configurando bloco Abrir Consulta para RoleSecurable

Adicionando eventos e ações

Após criar os blocos de programação, precisamos adicioná-los a determinados eventos e ações do projeto (Figura 5). Para acessar essa funcionalidade, clique em Projetos Eventos e Ações no menu do sistema. Como mostra a imagem abaixo, a janela exibe diversos campos.

O primeiro evento que vamos associar um bloco de programação é o Depois de fazer login (destaque 1 da Figura 5). Esse evento é executado após um usuário efetuar login na aplicação. Neste eventos vamos vincular a função "criarIdParaToken" (Figura 2), para isso basta clicar no ícone azul ao lado e selecionar a função especificada.

O segundo evento é o Depois de fazer logout (2), executado após um usuário encerrar a sessão na aplicação. Nele vamos vincular a função "tornarTokenInvalido" (Figura 3). Por fim, na ação Obter Autorização do Papel (3), que obtém os permissionáveis vinculados a um grupo ou role, adicionamos o bloco "checarValidadeToken" (Figura 4). 


Figura 5 - Configurando eventos e ações

Executando o projeto

Após completar os passos anteriores, salve as alterações e execute o projeto. Na tela de login, preencha os campos com um nome de usuário e senha e faça login na aplicação. Para este exemplo, utilizamos "admin" em ambos os campos (Figura 6).


Figura 6 - Tela de login


Depois de fazer login na aplicação, clique no ícone de destaque 1 da Figura 7 para acessar o banco de dados, e, em seguida, clique na opção Manipular dados. Na janela exibida em sequência (Figura 7), realize uma consulta simples na tabela "Session" (destaque 2) e observe que o atributo "valid" do usuário logado está definido como "TRUE" (3). Esse valor denota que o token é válido, indicando que o usuário está autenticado na aplicação.

Posteriormente, faça o logout do usuário e novamente consulte a tabela "Session". Você notará que o valor do token estará como "FALSE", indicando que o usuário não está mais autenticado na aplicação. Dessa forma, o token passa a ser inválido e não pode mais ser utilizado.


Figura 7 - Visualização do banco de dados


Nesta página

  • Sem rótulos