Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

O gerenciamento de tokens é um componente fundamental em sistemas que envolvem autenticação e autorização. Um token, nesse contexto, é uma representação digital de uma credencial 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 arquivo 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" está como verdadeiro, identificando que o usuário estar logado, portanto seu token é válido. A função configurada deve estar como a imagem abaixo.

Âncora
criarIdParaToken
criarIdParaToken

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.

Âncora
tornarTokenInvalido
tornarTokenInvalido

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. Caso o token seja inválido, será lançada uma exceção. Monte a sua função conforme a Figura 4.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, Para isso, utilizamos os blocos Se faça, que verifica se existe um token na requisição, em seguida obtém-se a variável desse token e é feito uma consulta por meio do bloco Abrir consulta...Nela utilizamos o bloco  para , que deve ser configurado conforme a Figura 4.1, para verificar se o token ... Este bloco será responsável por checar validade do token nas requisições. Este bloco precisará retornar os Permissionáveis do papel 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. Essa função irá verificar as requisições. "Olha eu tenho um token aqui no meu cabeçalho, pega esse id e checa na tabela pra ver se esse id do token de um usuário são válidos." Se não forem válidos será lançado uma exceção., por isso utilizamos outro bloco Abrir consulta no retorno da função com a entidade RoleSecurable, configure-o conforme a Figura 4.2.

Âncora
checarValidadeToken
checarValidadeToken

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 imagem abaixo exibe a configuração do Abrir consulta agora configurado com a entidade RoleSecurable.


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 alguns determinados eventos e ações do projeto (Figura 5). Para abrir acessar essa funcionalidade, clique em Projetos Eventos e Ações no menu do sistema. Como mostra a imagem abaixo, a janela possuem alguns campos, oexibe diversos campos. Os campos derelacionados aos Eventos permitem executar uma ação antes ou após um evento específico. Já os decampos referentes as Ações, substituem uma ação padrão do Cronapp por uma nova.

O primeiro evento que iremos vincular vamos associar um bloco de programação é o Depois de fazer login , esse (destaque 1 da Figura 5). Esse evento é executado após algum um usuário logar 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), esse evento é executado após algum usuário sair da um usuário encerrar a sessão na aplicação. Nele vamos vincular a função "tornarTokenInvalido" (Figura 3). Por últimofim, na ação ação Obter Autorização do Papel (3), que obtém 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

/Testando

o projeto

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


Figura 6 - Tela de login


Após logar na aplicação, vamos acessar a opção de banco de dados (destaque 1 da Figura 7). Em seguida, clique na opção de Manipular dados. Faça uma consulta simples na tabela Session e observe token do usuário logado está como TRUE, ou seja, é um token válido pois o usuário está autenticado na aplicação. Em seguida, faça o logout do usuário, e novamente consulte a tabela Session, observe que o token está como falso, mostrando que o usuário não está mais logado na aplicação....


Figura 7 - Visualização do banco de dados


Nesta página

Índice