TextSorter
Your token will appear here

Vamos falar sobre tokens

Olá amigos. Vocês já se perguntaram como os sites lembram quem vocês são. Você faz login uma vez e bum, você está dentro. Você clica por aí. Você compra coisas. Você posta fotos engraçadas de gatos. O site simplesmente sabe que é você. Como ele faz isso. Bem, não é mágica. Geralmente é um JSON Web Token.

Imagine que você vai a um show exclusivo. Você espera na fila. A pessoa na porta verifica seu ingresso. Eles verificam se você é real. Então eles carimbam sua mão. Pelo resto da noite, você apenas mostra o carimbo. Você não precisa mostrar seu ingresso novamente. O JSON Web Token é exatamente como esse carimbo na mão. Ele prova que você já foi verificado. Ele prova que você pertence àquele lugar.

Desmontando o token

Um token é feito de três partes distintas. Elas são coladas com um caractere de ponto. Essas partes são o cabeçalho, a carga útil e a assinatura. Vamos mergulhar no que cada parte realmente faz.

O primeiro é o cabeçalho. O cabeçalho é como o envelope de uma carta. Ele diz o que tem dentro. Ele geralmente diz o tipo de token e o algoritmo usado para assiná-lo. Na maioria das vezes, o tipo é apenas JWT. O algoritmo pode ser HS256. É muito simples. É apenas um minúsculo objeto JSON que é codificado em texto.

Em seguida é a carga útil. Esta é a verdadeira carne do token. É onde você coloca seus dados reais. Você pode colocar um ID de usuário aqui. Você pode colocar uma função como administrador ou usuário. Você pode colocar uma data de validade. Esses dados também são apenas um objeto JSON. Chamamos os pedaços de dados de reivindicações. Existem reivindicações padrão e reivindicações personalizadas. Você pode colocar quase qualquer coisa que quiser na carga útil. Apenas lembre-se de que qualquer um pode ler. Não coloque senhas ou coisas super secretas na carga útil. É codificado, não criptografado. Essa é uma diferença enorme.

Por fim, temos a assinatura. Esta é a parte mais crítica. A assinatura é o que torna o token seguro. Sem uma assinatura, qualquer pessoa poderia simplesmente alterar seu ID de usuário para outra pessoa. Eles poderiam se tornar administradores. Isso seria um desastre. A assinatura evita isso. Ela pega o cabeçalho e a carga útil. Ela adiciona uma chave secreta que apenas o servidor conhece. Então ela faz algumas contas matemáticas extravagantes em tudo isso. Se alguém mudar apenas uma única letra no cabeçalho ou na carga útil, a matemática não corresponderá à assinatura. O servidor saberá que o token é falso. É brilhantemente simples e ao mesmo tempo extremamente seguro.

Como assinar um token

Assinar um token parece complicado. Na verdade, é bastante direto. Você precisa do seu cabeçalho codificado. Você precisa da sua carga útil codificada. Você precisa de uma chave secreta. Você combina o cabeçalho e a carga útil com um caractere de ponto. Então você os passa por uma função de hash com sua chave secreta. A função mais comum é HMAC SHA256.

Quando a matemática estiver concluída, você obterá uma sequência de caracteres. Esta é a sua assinatura. Você a codifica para que seja seguro enviá-la pela web. Então você a anexa ao final do seu cabeçalho e carga útil com outro ponto. Agora você tem um token completo. Ele está pronto para ser enviado ao servidor. O servidor fará exatamente a mesma matemática quando receber o token. Se o resultado corresponder à assinatura que você enviou, o servidor sabe que o token é válido. O servidor sabe que ninguém o alterou.

Por que nós os amamos

Os desenvolvedores amam absolutamente esses tokens. Por que. Porque eles não têm estado. Isso é um grande negócio no mundo da programação.

Antigamente, os servidores precisavam lembrar de cada pessoa que estava logada. Eles armazenavam isso em um banco de dados ou na memória. Nós chamávamos isso de sessão. Se um milhão de pessoas fizessem login, o servidor tinha que lembrar de um milhão de sessões. Isso usava muita memória. Era difícil de escalar. Se você tivesse cinco servidores, todos eles precisariam compartilhar os dados da sessão. Era uma grande dor de cabeça.

JSON Web Tokens consertam tudo isso. O servidor não lembra de nada. O servidor simplesmente lhe dá o token e esquece você. Quando você volta, você mostra o token. O servidor verifica a assinatura. Se a assinatura for válida, o servidor confia no token. Ele lê a carga útil para ver quem você é. O servidor não precisa procurar uma sessão em um banco de dados. É incrivelmente rápido. Ele usa quase zero memória no servidor. Você pode ter dez servidores ou mil servidores. Todos eles podem verificar o token sem se falarem. Isso torna a escala de aplicativos da web muito mais fácil.

Erros comuns a evitar

Existem algumas armadilhas que você deve observar. Nós vemos as pessoas cometerem os mesmos erros repetidamente.

O primeiro erro é colocar dados confidenciais na carga útil. Eu sei que já disse isso. Estou dizendo novamente porque é muito importante. A carga útil é apenas codificada em base64. Qualquer um pode decodificá-la. Você pode decodificá-la no seu navegador agora mesmo. Se você colocar um número de cartão de crédito na carga útil, todos poderão vê-lo. Coloque apenas dados que sejam seguros para o público.

O segundo erro é usar uma chave secreta fraca. Sua chave secreta é a única coisa que mantém o token seguro. Se alguém adivinhar sua chave secreta, poderá criar seus próprios tokens. Eles podem fingir ser qualquer pessoa. Trate sua chave secreta como uma senha mestra. Torne-a longa. Torne-a aleatória. Nunca a compartilhe. Nunca a coloque no seu código fonte.

O terceiro erro é não verificar a data de validade. Os tokens não devem viver para sempre. Se um token nunca expirar, e um hacker o roubar, ele poderá usá-lo para sempre. Sempre dê aos seus tokens uma data de validade. Quando eles expiram, o usuário precisa obter um novo. Isso limita os danos se um token for roubado.

Vamos concluir tudo

Então aí está, pessoal. Isso é tudo que você precisa saber sobre JSON Web Tokens. Eles são uma invenção brilhante. Eles tornam a web mais rápida e mais segura. Eles resolvem grandes problemas para os desenvolvedores. Eles agem como um passaporte digital. Você é carimbado uma vez e está pronto para ir. O cabeçalho diz o que é. A carga útil guarda seus dados. A assinatura mantém tudo seguro. Apenas lembre-se de manter seus segredos em segredo. Não coloque coisas privadas na carga útil. Sempre defina uma data de validade. Você estará criando aplicativos seguros em pouco tempo.

Agora vá em frente e experimente nosso construtor. É muito divertido brincar com ele. Você pode alterar o cabeçalho. Você pode alterar a carga útil. Você pode adicionar sua própria chave secreta. Observe como o token muda instantaneamente. É uma ótima maneira de aprender como eles funcionam. Divirta-se explorando o mundo dos tokens seguros.

Frequently Asked Questions

Esses tokens são realmente seguros
Sim, eles são muito seguros se você usar uma chave secreta forte. A assinatura impede que qualquer pessoa altere os dados de qualquer forma.
Posso colocar senhas na carga útil
Não, absolutamente não. A carga útil é codificada em base64 e visível para todos. Nunca coloque senhas ou segredos confidenciais lá dentro.
Como eu decodifico um token
Você pode decodificar facilmente as partes do cabeçalho e da carga útil em base64. A parte verificada pela assinatura garante a integridade dos dados.
Minha chave secreta é enviada para algum servidor
Não, toda a geração e assinatura do token acontece inteiramente no seu navegador. Sua chave secreta nunca sai do seu próprio dispositivo.