18.1 Trabalhando com JSON Web Tokens (JWT) em NodeJS

JSON Web Tokens, ou JWTs, são uma parte integral do desenvolvimento web moderno, oferecendo um método seguro e eficiente para autenticação e autorização. Eles são especialmente úteis em APIs, onde a comunicação entre o cliente e o servidor precisa ser rápida e segura. Neste capítulo, vamos explorar o que são JWTs, como eles funcionam, e como podemos implementá-los em uma API NodeJS.

O que são JSON Web Tokens?

JWTs são tokens de acesso que são usados para autenticar usuários e transmitir informações entre partes. Eles são compactados em formato JSON, o que os torna leves e fáceis de transmitir. Cada JWT é composto por três partes: o cabeçalho, a carga útil e a assinatura.

O cabeçalho geralmente contém duas partes: o tipo do token, que é JWT, e o algoritmo de assinatura, como HMAC SHA256 ou RSA. A carga útil, também conhecida como 'claims', são declarações sobre uma entidade (geralmente o usuário) e metadados adicionais. 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.

Como JWTs funcionam?

Quando um usuário se autentica com sucesso em um aplicativo, o servidor cria um JWT e o envia de volta para o usuário. Este token é geralmente armazenado localmente no dispositivo do usuário e enviado junto com cada solicitação subsequente ao servidor. O servidor verifica a assinatura do token para garantir que é válido e, em seguida, usa as informações na carga útil para processar a solicitação.

Um dos principais benefícios dos JWTs é que eles são autossuficientes. Isso significa que todas as informações necessárias para autenticar o usuário estão contidas no token, eliminando a necessidade de consultas de banco de dados adicionais para verificar a identidade do usuário. Isso pode resultar em melhor desempenho e escalabilidade.

Implementando JWTs em NodeJS

Para trabalhar com JWTs em NodeJS, precisamos do pacote 'jsonwebtoken'. Este pacote fornece uma série de funções úteis para trabalhar com JWTs, incluindo funções para criar, verificar e decodificar tokens.

Para criar um JWT, usamos a função 'sign'. Esta função aceita três argumentos: a carga útil, uma chave secreta usada para assinar o token, e um objeto de opções. O objeto de opções pode incluir coisas como o algoritmo de assinatura a ser usado e a duração do token.

const jwt = require('jsonwebtoken');
const payload = {
  username: 'JohnDoe',
  role: 'admin'
};
const secret = 's3cr3t';
const options = {
  expiresIn: '2h'
};
const token = jwt.sign(payload, secret, options);

Para verificar um JWT, usamos a função 'verify'. Esta função aceita três argumentos: o token, a chave secreta usada para assinar o token, e uma função de callback. A função de callback é chamada com o resultado da verificação.

const jwt = require('jsonwebtoken');
const token = '...'; // o token recebido
const secret = 's3cr3t';
jwt.verify(token, secret, (err, decoded) => {
  if (err) {
    console.log('Token inválido');
  } else {
    console.log('Token válido', decoded);
  }
});

É importante notar que a chave secreta usada para assinar e verificar o token deve ser mantida segura. Se um invasor obtiver acesso à chave secreta, ele poderá criar seus próprios tokens e ganhar acesso não autorizado ao aplicativo.

Em resumo, os JWTs oferecem uma maneira segura e eficiente de lidar com a autenticação e autorização em APIs. Eles são especialmente úteis em NodeJS, onde podemos tirar proveito do pacote 'jsonwebtoken' para criar, verificar e decodificar tokens com facilidade.

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

O que são JSON Web Tokens (JWTs) e como eles são implementados 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 gerar um JWT em NodeJS 111

Próxima página do Ebook Gratuito:

Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como gerar um JWT em NodeJS

Tempo estimado de leitura: 3 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