A autenticação baseada em token é uma maneira de confirmar a identidade de um usuário ou dispositivo. Ela se baseia em verificar se a entidade em questão possui um token emitido anteriormente.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
A autenticação baseada em tokens é o processo de verificação de identidade verificando um token. No gerenciamento de acesso, os servidores usam autenticação por token para verificar a identidade de um usuário, uma API, um computador ou outro servidor.
Um token é um item simbólico emitido por uma fonte confiável — pense em como os agentes da lei carregam um crachá emitido por sua agência que legitima sua autoridade. Os tokens podem ser físicos (como uma chave USB) ou digitais (uma mensagem gerada por computador ou assinatura digital).
A autenticação baseada em token pode se referir a alguns processos diferentes:
A autenticação via token físico geralmente ocorre durante o processo de login do usuário. O usuário tem que provar que possui um item que ninguém mais possui. Ele pode provar isso inserindo um código exibido pelo item, conectando o item a um dispositivo via USB, conectando o item via Bluetooth ou vários outros métodos. Semelhante à maneira como inserir uma senha prova que o usuário possui um conhecimento que ninguém mais possui, usar um token prova que um usuário possui um item que apenas ele possui.
Existem dois tipos de tokens usados para esse tipo de autenticação:
Um token da web é um item digital, não físico. É uma mensagem enviada de um servidor para um cliente e armazenada temporariamente pelo cliente. O cliente inclui uma cópia do token em solicitações subsequentes enviadas ao servidor para confirmar o status de autenticação do cliente.
Enquanto a autenticação por token físico verifica a identidade durante o processo de login, os tokens da web são emitidos como resultado de um login bem-sucedido. Eles mantêm a sessão de login ativa.
No entanto, usar tokens da web para sessões de usuário nem sempre é o ideal. Muitos desenvolvedores são defensores do uso de cookies. Os tokens da web podem ser melhor usados para autenticação de endpoints de APIs ou para validar uma conexão entre servidores, em vez de entre servidor e cliente.
No desenvolvimento da web, "tokens da web" quase sempre se referem a JSON Web Token. JSON Web Token (JWT) é um padrão para criar tokens da web assinados digitalmente que contêm dados JavaScript Object Notation (JSON). Um servidor cria um token que comprova a identidade do cliente e o envia ao cliente. O JWT usa assinaturas digitais para provar que o token é legítimo.
Os JWTs incluem três componentes:
Às vezes, os JWTs são usados para manter os usuários autenticados depois que eles fazem login em um aplicativo web. No entanto, os cookies também podem ser usados para esse fim.
Um cookie é um pequeno arquivo de dados que um servidor envia a um cliente. Quando um usuário entra em um aplicativo web, o servidor gera um cookie e o envia para o dispositivo cliente (normalmente o computador ou smartphone do usuário). O dispositivo cliente armazena o cookie no cache do navegador e inclui uma cópia do cookie em solicitações futuras ao servidor, semelhante à forma como os JWTs podem ser usados. Depois que o usuário sai, o navegador exclui o cookie.
Os cookies têm um tamanho de arquivo muito menor em comparação com os JWTs, porque os JWTs incluem cabeçalhos e assinaturas digitais além da carga. Por outro lado, o cookie contém apenas a carga. Isso os torna muito mais eficientes em termos de performance na web e largura de banda.
Os JWTs não são otimizados para performance porque incluem assinaturas digitais, que garantem que seu conteúdo não seja adulterado. Mas se um aplicativo web estiver usando HTTPS (como deveria), um cookie deve ser à prova de adulteração de qualquer maneira. O HTTPS criptografará e assinará o cookie junto com todos os outros dados do HTTP que estão sendo trocados entre cliente e servidor e os invasores não poderão forjá-lo ou interceptá-lo em trânsito, a menos que estejam realizando um ataque on-path.
Os JWTs são mais adequados para APIs e conexões de servidor para servidor. Esses usos não precisam escalar muito: um aplicativo web pode obter um milhão de usuários, mas não terá um milhão de conexões de API. Isso reduz o impacto potencial na performance e na largura de banda. No entanto, outros métodos de autenticação, como TLS mútuo, às vezes são mais eficientes para APIs —saiba mais sobre TLS mútuo.