Glossário

O que é JSON Web Token?

Um JSON Web Token (JWT) é um formato de token compacto e seguro para URL, definido pelo RFC 7519, que representa reivindicações entre duas partes como um objeto JSON assinado digitalmente, permitindo a autenticação sem estado e a troca de informações.

Também conhecido como: JSON Web Token, JWTs

Um JWT consiste em três partes codificadas em base64url e separadas por pontos: um cabeçalho (que especifica o algoritmo de assinatura), uma carga útil (que contém reivindicações, ou seja, pares chave-valor como o ID de usuário, os papéis e o tempo de expiração) e uma assinatura (calculada sobre o cabeçalho e a carga útil usando uma chave secreta ou privada). A assinatura permite a qualquer parte que disponha da chave de verificação confirmar que o token não foi adulterado.

Os JWTs são amplamente usados como tokens de portador na autenticação de API. Depois que um usuário faz login, o servidor emite um JWT que contém sua identidade e permissões. O cliente inclui esse JWT nas solicitações subsequentes (normalmente no cabeçalho Authorization) e o servidor verifica a assinatura sem precisar consultar um banco de dados ou um armazenamento de sessões. Essa propriedade sem estado torna os JWTs atraentes para sistemas distribuídos e arquiteturas de microsserviços onde compartilhar o estado de sessão entre serviços é pouco prático.

Os JWTs trazem considerações de segurança importantes. Como a carga útil é apenas codificada em base64 (não criptografada), qualquer pessoa que intercepte um JWT pode ler seu conteúdo: nunca coloque segredos nas cargas úteis de um JWT a menos que use JWE (JSON Web Encryption). Os tokens devem ter tempos de expiração curtos porque não podem ser facilmente revogados depois de emitidos. Os ataques de confusão de algoritmos, em que um atacante muda o cabeçalho para "none" ou troca a verificação assimétrica pela simétrica, têm sido uma vulnerabilidade recorrente nas bibliotecas de JWT.

Como o Vaulted usa JSON Web Token

O Vaulted não usa JWT para a autenticação nem o gerenciamento de sessões, já que não tem contas de usuário. No entanto, os JWTs e outros tokens de portador são credenciais compartilhadas com frequência que precisam de uma transmissão segura; por exemplo, compartilhar um token de API de longa duração ou um segredo de JWT de serviço para serviço com um colega durante um incidente. O Vaulted oferece uma entrega criptografada e autodestrutiva para esses tokens, garantindo que não persistam nos canais de comunicação.