Neste artigo será explicado o conceito de Refresh Token. Hoje em dia, a segurança da informação é muito importante e por vezes é necessário mecanismos para proteger os dados contra ataques informáticos. É exatamente pela segurança que existe o chamado Refresh Token.
O que é um token ?
Antes de definir o que é um Refresh Token, temos de entender primeiro o que é um token. Um token armazena de forma criptografada um conjunto de informações. Essas informações designam-se claims. Num token pode estar criptografado um e-mail e um identificador de utilizador. Isto é o que pode acontecer com o JWT (JSON Web Token).
E agora, o que é refresh token?
Refresh token é utilizado para criar uma nova chave de acesso sempre que a chave de acesso fique expirada. O token de acesso ou chave de acesso deve ter uma curta duração de tempo e através do refresh token será criada um nova chave com a mesma duração de tempo. O refresh token também pode ter uma data de expiração normalmente é comum elas terem um ano de expiração. Após expirar, pode ser pedido para iniciar sessão novamente e gerar um novo token, ou pode-se adicionar um custo e gerar o token automaticamente junto com o novo refresh token. Ou seja sincronização automática.
Porquê usar refresh tokens ?
Imaginemos que temos um conjunto de dados de utilizadores de uma clínica. Por se tratarem de dados sensíveis, é importante proteger esses dados porque podem fazerem-se passar por essa pessoa. Por exemplo, marcar um exame que não era suposto marcar por exemplo. Sendo que o token tem pouco tempo, isso irá criar uma segurança no acesso aos recursos.
Como implementar o conceito ?
Nas figuras seguintes encontra-se diagramas de fluxo do processo.
Na primeira figura é realizado o login normal, retornando o refresh token e o access token. O refresh token podem ser guardados numa base de dados qualquer, normalmente numa base de dados chave valor como o Redis, nos cookies ou no localStorage do navegador.
Na segunda figura o procedimento de validação é o normal retornando token expirado em caso estar expirado. Depois o refresh token e carregado na função refrescar token que vai tentar refrescar o token que expirou, no entanto em caso do refresh token ter expirado, irá fazer mais um procedimento e criar um novo refresh token e retornar o token e o refresh token em caso de refrescamento.
Este artigo é apenas uma espécie de algoritmo que vai implementar o conceito. A ideia é sempre a mesma para todas as linguagens, apenas é necessário entender o conceito e depois a implementação é direta.