Pare de usar Json Web Tokens (JWT's) para autenticação de aplicações WEB!
Para que entenda o motivo desta afirmação, vamos ver como é formado um JWT:
Cada parte é separada por um ponto (.) então podemos concluir que ele é composto por 3 partes. As duas primeiras partes são chamadas de Header e Payload respectivamente e são compostas de uma codificação conhecida como Base64, lembrando que essa codificação não é um hash (porque pode ser revertido) e não é criptografia (porque não precisamos de uma chave para ter acesso à mensagem de origem), podemos decodificar utilizando os seguintes comandos no bash:
Header:
Payload:
Como resultado temos no Header o tipo de token e qual algoritmo de hash foi utilizado para gerar a assinatura, já no Payload temos algumas informações (identificador de usuário, expiração do token, e outras que podem ser adicionadas conforme necessidade).
A terceira parte é quem comprova a integridade e autenticidade das informações contidas no token, pois é a assinatura, ou seja, é um Hash gerado a partir da concatenação: Header + Payload + Chave. O token pode ser gerado e validado por qualquer um que tiver posse da chave utilizada (inclusive para gerar tokens fraudulentos), por isso o motivo de evitar seu compartilhamento. As vezes precisamos compartilhar essa chave, para isso podemos utilizar a criptografia assimétrica, conhecida como de chave pública e privada.
Concluíndo, o JWT não garante a confidencialidade das informações contidas no token, somente a autenticidade e integridade. Então é necessário avaliar cada caso levando em consideração estes pontos. Muito cuidado com informações que são trafegadas via JWT, pois uma vez gerado qualquer um que tiver acesso ao token terá acesso às informações nele contidas nele.
Confira um vídeo detalhado no link abaixo:
Comentários
Postar um comentário