Um dos tópicos mais importantes que abordaremos em nosso curso e-book 'Como criar APIs em NodeJS do básico ao avançado' é o uso de JSON Web Tokens (JWT) em NodeJS. JWT é uma maneira segura de transmitir informações entre partes como um objeto JSON. Essa informação pode ser verificada e confiável porque é assinada digitalmente. JWTs podem ser assinados usando um segredo (com o algoritmo HMAC) ou um par de chaves público/privado usando RSA ou ECDSA.

O JWT é composto por três partes: o cabeçalho, a carga útil e a assinatura. O cabeçalho tipicamente consiste no tipo do token e no algoritmo de assinatura usado. A carga útil contém as reivindicações ou as peças de informação que estão sendo passadas. A assinatura é usada para verificar que o remetente do JWT é quem diz ser e para garantir que a mensagem não foi alterada ao longo do caminho.

Um dos aspectos mais cruciais do trabalho com JWT é a configuração da expiração do token. A expiração de um token é importante porque ajuda a proteger o aplicativo de possíveis ameaças de segurança. Tokens que não expiram podem ser perigosos, pois se um ator mal-intencionado conseguir um, ele terá acesso contínuo ao sistema.

Em NodeJS, podemos usar a biblioteca jsonwebtoken para trabalhar com JWT. Para instalar esta biblioteca, você pode usar o comando npm:

npm install jsonwebtoken

Depois que a biblioteca estiver instalada, você pode começar a usá-la para criar e verificar tokens. Aqui está um exemplo de como criar um token com uma expiração definida:

const jwt = require('jsonwebtoken');

const data = {
  id: 1,
  name: 'John Doe'
};

const secret = 's3cr3t';

const token = jwt.sign(data, secret, { expiresIn: '1h' });

Neste exemplo, 'data' é o objeto que queremos codificar no token. 'Secret' é a chave secreta que será usada para assinar o token. O objeto final passado para a função jwt.sign é um objeto de opções. A opção 'expiresIn' permite definir a expiração do token. Neste caso, o token expirará em uma hora.

Para verificar um token, você pode usar a função jwt.verify. Aqui está um exemplo:

const jwt = require('jsonwebtoken');

const token = '...'; // o token que você recebeu
const secret = 's3cr3t';

try {
  const decoded = jwt.verify(token, secret);
  console.log(decoded);
} catch (err) {
  console.error('Token inválido:', err);
}

Se o token for válido e não tiver expirado, jwt.verify retornará o objeto decodificado. Se o token for inválido ou tiver expirado, ele lançará um erro.

É importante notar que você deve sempre proteger a chave secreta usada para assinar os tokens. Se um ator mal-intencionado obtiver sua chave secreta, ele poderá assinar seus próprios tokens e obter acesso ao seu sistema. Portanto, em um ambiente de produção, você deve usar uma solução de gerenciamento de segredos para proteger suas chaves.

Além disso, embora os JWTs sejam uma maneira conveniente de transmitir informações entre o cliente e o servidor, eles não devem ser usados para armazenar informações sensíveis, a menos que sejam criptografados. Isso ocorre porque o conteúdo de um JWT pode ser facilmente decodificado e lido por qualquer pessoa que obtenha o token.

Em resumo, JWTs são uma ferramenta poderosa para autenticação e autorização em aplicações NodeJS. Eles permitem que você transmita informações de maneira segura entre partes e podem ser facilmente configurados para expirar após um determinado período de tempo, ajudando a aumentar a segurança do seu aplicativo.

Agora responda o exercício sobre o conteúdo:

O que é o JWT e como ele é usado em NodeJS?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como adicionar informações extras em um JWT 116

Próxima página do Ebook Gratuito:

Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como adicionar informações extras em um JWT

Tempo estimado de leitura: 4 minutos

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.

+ de 9 milhões
de alunos

Certificado grátis e
válido em todo o Brasil

60 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, ebooks e audiobooks