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.


Nota

Projetos Cronapp, a partir da versão 2.9.6-SP.40, possuem um recurso automático de invalidação de tokens. Projetos anteriores a essa versão podem ser configurados para utilizar essa funcionalidade. Para mais detalhes desse recurso, consulte a documentação Invalidação de tokens. Logo, não recomendamos o uso desse tutorial, que será mantido apenas para projetos que ainda seguem a estrutura apresentada aqui.


O gerenciamento de tokens também pode ser utilizado para controlar sessões de usuários e impedi-los, por exemplo, de utilizar tokens expirados após efetuar logout. Nas Configurações do projeto do Cronapp é possível determinar o tempo que um token ficará ativo. No entanto, se você desejar criar regras personalizadas, alinhadas com requisitos específicos do seu negócio, este tutorial será de ajuda. NeleTokens 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 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 (tipo Texto) e valid (tipo Lógico), conforme a imagem abaixo. Após a criação da classe, gere a camada de persistência (destaque 2). 

Dependendo da sua regra de negócio, recomenda-se que os registros de tokens salvos sejam validados e excluídos após determinado período de tempo, para isso pode-se adicionar na classe, por exemplo, um campo para a data de expiração do token. Não abordaremos esses passos no tutorial para não aumentar a sua complexidade, uma vez que a implementação depende das regras específicas de cada projeto. 


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 . Observe que no bloco, o atributo "valid" está como verdadeiro" recebe o bloco valor booleano configurado com o valor "verdadeiro", identificando que o usuário estar logadoautenticado, 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 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.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, 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.


Â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 Figura 4.2 exibe a configuração do bloco Abrir consulta agora configurado com a entidade RoleSecurable. Adicione a entidade, o campo, uma nova regra e um grupo, como mostrado na imagem, fique atento às condicionais dos grupos e regras: "E" (destaque a) na primeira regra e "OU" (destaque b) no grupo. Para incluir os campos em destaque, clique na opção Novo Grupo (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 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, os campos de Eventos permitem executar uma ação antes ou após um evento específico. Já os de Ações, substituem uma ação padrão do Cronapp por uma novaexibe diversos campos.

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


Image Added

Figura 7 - Visualização do banco de dados


Posteriormente, faça o logout do usuário como apresentado na imagem abaixo.


Image Added

Figura 7.1 - Fazendo logout do usuário


Consulte , e novamente consulte a tabela Session, observe que o token está como falso, mostrando "Session" (destaque 1 da Figura 7.2). Você notará que o valor do token estará como "FALSE" (2), indicando que o usuário não está mais logado autenticado na aplicação. ..Dessa forma, o token passa a ser inválido e não pode mais ser utilizado.


Image RemovedImage Added

Figura 7.2 - Visualização do banco de dados após logout


Nesta página

Índice