JSON Web Tokens (JWT) é uma maneira eficaz de garantir a segurança dos dados transmitidos entre o cliente e o servidor em uma aplicação NodeJS. JWT é um padrão (RFC-7519) que define uma maneira compacta e independente de transmitir informações com segurança entre as partes sob a forma de um objeto JSON. Essas informações podem ser verificadas e confiáveis porque são assinadas digitalmente.

A revogação de um JWT é um aspecto crucial a ser considerado ao trabalhar com JWTs em NodeJS. A revogação é o processo de tornar um token JWT inútil ou inválido. Isso é necessário em várias situações, como quando um usuário faz logout, quando um token é roubado ou quando um token é usado de maneira inadequada.

Para revogar um JWT, você pode usar várias abordagens. Uma maneira comum é criar uma lista negra de tokens. Essa lista negra pode ser armazenada em um banco de dados ou em um cache, como Redis. Quando um usuário faz logout ou quando um token é considerado inseguro, você pode adicionar o token a esta lista negra. Em seguida, durante cada solicitação, você pode verificar se o token está na lista negra. Se estiver, você pode rejeitar a solicitação.

Outra abordagem é usar um token de atualização junto com o token de acesso. Neste caso, o token de acesso tem um tempo de vida muito curto, digamos 15 minutos. O token de atualização tem uma vida útil mais longa, digamos 24 horas. Quando o token de acesso expira, o cliente solicita um novo token de acesso usando o token de atualização. Se o token de atualização for revogado, o cliente não poderá obter um novo token de acesso.

Para implementar a revogação de JWT em NodeJS, você pode usar o pacote 'jsonwebtoken'. Primeiro, você precisa instalar o pacote usando o comando npm:

npm install jsonwebtoken

Depois de instalar o pacote, você pode usá-lo para criar e verificar tokens JWT. Aqui está um exemplo de como criar um token JWT:

const jwt = require('jsonwebtoken');

const payload = {
  userId: '123',
};

const secret = 'my_secret_key';

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

No exemplo acima, primeiro importamos o pacote 'jsonwebtoken'. Em seguida, criamos um payload que contém as informações que queremos incluir no token. Então, usamos a função 'sign' para criar o token. A função 'sign' recebe três argumentos: o payload, a chave secreta e as opções. As opções podem incluir a duração do token, que é definida para uma hora neste exemplo.

Para verificar e revogar um token, você pode fazer algo assim:

const jwt = require('jsonwebtoken');

const token = 'the_token_to_verify';

const secret = 'my_secret_key';

try {
  const decoded = jwt.verify(token, secret);

  // check if the token is in the blacklist
  if (isTokenInBlacklist(token)) {
    throw new Error('Token is revoked');
  }

  console.log(decoded);
} catch (err) {
  console.error(err.message);
}

No exemplo acima, primeiro importamos o pacote 'jsonwebtoken'. Em seguida, definimos o token que queremos verificar e a chave secreta. Usamos a função 'verify' para verificar o token. Se o token for válido, a função 'verify' retorna o payload decodificado. Se o token for inválido, a função 'verify' lança um erro. Em seguida, verificamos se o token está na lista negra. Se estiver, lançamos um erro.

Trabalhar com JWTs em NodeJS é uma parte importante do desenvolvimento de aplicações seguras. A revogação de JWTs é um aspecto crucial a ser considerado, pois permite que você mantenha o controle sobre os tokens que estão em circulação. Ao implementar a revogação de JWTs, você pode garantir que os tokens inseguros ou não desejados sejam invalidados, melhorando a segurança de sua aplicação.

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

O que é a revogação de um JSON Web Token (JWT) em uma aplicação NodeJS e quais são algumas maneiras de implementá-la?

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 lidar com refresh tokens em NodeJS 118

Próxima página do Ebook Gratuito:

Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como lidar com refresh tokens em NodeJS

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