Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como configurar a expiração de um JWT

Capítulo 115

Tempo estimado de leitura: 3 minutos

+ Exercício
Audio Icon

Ouça em áudio

0:00 / 0:00

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:

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

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.

JWT (JSON Web Token) é uma forma segura de transmitir informações entre partes como um objeto JSON. Em NodeJS, é usado principalmente para autenticação, consistindo de três partes: cabeçalho, carga útil e assinatura. Ele pode ser assinado usando um segredo ou um par de chaves público/privado, garantindo a verificação da identidade do emissor e a integridade dos dados.

Próximo capitúlo

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

Arrow Right Icon
Capa do Ebook gratuito Como criar APIs em NodeJS do básico ao avançado
77%

Como criar APIs em NodeJS do básico ao avançado

Novo curso

149 páginas

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