Em sistemas que requerem autenticação e autorização de usuários, o uso de tokens é um elemento fundamental. Nesse contexto, um token pode ser utilizado para validar ou não a identidade de um usuário e permitir seu acesso a uma aplicação. Além disso, podem ser empregados para gerenciar sessões de usuários e impedir o uso de tokens expirados após logout

Os projetos Cronapp, a partir da versão 2.9.6-SP.40, possuem um mecanismo para invalidação de tokens. Esse recurso não é utilizado automaticamente em projetos anteriores a essa versão. No entanto, esses projetos antigos podem ser adaptados para esse novo formato. Nessa documentação, serão abordados mais detalhes dessa funcionalidade e as etapas necessárias para configurá-la em projetos antigos.

Tokens no Cronapp

O recurso de invalidação de tokens nos projetos Cronapp é apresentado através da classe "InvalidatedToken" no Diagrama de dados. Para mais detalhes dessa classe, consulte o tópico Configurando projetos antigos

Após logar na aplicação, o token do usuário é mantido nos Cookies de navegação (chave AuthToken) e, após logout, um identificador desse token e seu tempo de expiração são salvos na tabela INVALIDATED_TOKEN do banco de dados, e a aplicação não aceitará nenhuma outra requisição com esse token. O tempo de expiração é determinado pelo valor configurado na opção "Expiração do Token (segundos)" nas Configurações do projeto. No entanto, a invalidação do token após logout da aplicação ocorre independente desse tempo. Além disso, quando o tempo de expiração do token for atingido e um novo login ou logout for realizado na aplicação, o registro do token será automaticamente removido da tabela do banco de dados.

Configurando projetos antigos

Para iniciar a configuração, começaremos criando uma nova classe no Diagrama de dados, que servirá para armazenar o ID do token associado a um usuário e sua data de expiração. É fundamental observar que, para que este recurso funcione corretamente, a classe deve ser criada no diagrama "app", que contém a estrutura de autenticação e segurança. Além disso, tanto a classe quanto seus atributos devem ter exatamente os mesmos nomes e tipos especificados abaixo, caso contrário, o recurso não funcionará.

Em seu projeto, 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 com o nome InvalidatedToken, a qual deve conter dois atributos, id (tipo Texto) e expirationDate (tipo Carimbo de Data e Hora), conforme a imagem abaixo. Após a criação da classe, gere a camada de persistência (destaque 2). Por fim, execute o projeto e faça login na aplicação.


Figura 1 - Classe "InvalidatedToken" no diagrama de dados


Caso a classe criada não esteja configurada corretamente, uma informação de que a classe não existe ou um erro semelhante ao da Figura 1.1 será exibido no console do depurador . Assim, é importante revisar a classe criada e fazer as correções necessárias de acordo com a Figura 1.


Figura 1.1 - Erro exibido no console do depurador devido a classe mal configurada 

Executando o projeto

Na imagem a seguir, é apresentado onde o token do usuário será armazenado, após o login na aplicação. Para visualizá-lo, acesse a ferramenta de desenvolvedor do navegador, na aba Application (destaque 1 da Figura 1.2) clique em Cookies (2) e, por fim, em AuthToken (3).


Figura 1.2 - Token do usuário armazenado nos Cookies


Sempre que o usuário efetuar logout da aplicação, o ID do token e sua data de expiração serão armazenados na tabela correspondente a classe "InvalidatedToken" no banco de dados


Figura 1.3 - Registro do token de um usuário no banco de dados

Nesta página

  • Sem rótulos