JSON Web Tokens (JWT) é um padrão aberto (RFC 7519) que define uma maneira compacta e autônoma de transmitir informações entre partes como um objeto JSON. Essas informações podem ser verificadas e confiáveis porque são assinadas digitalmente. JWTs podem ser assinados usando um segredo (com o algoritmo HMAC) ou um par de chaves pública/privada usando RSA ou ECDSA.

Na criação de APIs em NodeJS, JWT desempenha um papel crucial na autenticação e autorização. Ele permite que os usuários se autentiquem, e uma vez autenticados, eles recebem um JWT. Este token é então usado para autorizar o usuário a acessar rotas, serviços e recursos que são permitidos com esse token. Isso torna o JWT uma ferramenta indispensável para a criação de APIs seguras.

A implementação do JWT em NodeJS é bastante direta, graças a pacotes como o jsonwebtoken. Para começar, você precisa instalar o pacote jsonwebtoken usando o npm.


npm install jsonwebtoken

Uma vez instalado, você pode importar o pacote em seu arquivo e começar a usá-lo para criar e verificar tokens.


const jwt = require('jsonwebtoken');

Para criar um token, você usa o método sign(). Este método aceita três argumentos: o payload, o segredo e as opções. O payload é o objeto que contém as reivindicações. As reivindicações são declarações sobre uma entidade (geralmente o usuário) e informações adicionais. O segredo é a chave secreta usada para assinar o token. As opções são usadas para definir outras propriedades do token, como o algoritmo de assinatura e a expiração do token.


let payload = {username: 'user'};
let secret = 'somesecretkey';
let token = jwt.sign(payload, secret, {expiresIn: '1h'});

Para verificar um token, você usa o método verify(). Este método aceita três argumentos: o token, o segredo e uma função de callback. A função de callback é chamada com o resultado da verificação.


jwt.verify(token, secret, function(err, decoded) {
  if (err) {
    console.log('Token verification failed');
  } else {
    console.log('Token verified successfully');
  }
});

Uma coisa importante a notar é que você deve sempre proteger o segredo usado para assinar o token. Se alguém tiver acesso ao seu segredo, ele poderá assinar tokens por conta própria, o que pode levar a sérios problemas de segurança.

Além disso, você deve sempre verificar o token antes de permitir que o usuário acesse rotas, serviços ou recursos protegidos. Isso pode ser feito usando um middleware que verifica o token em cada solicitação.


function authenticateToken(req, res, next) {
  const token = req.headers['authorization'];
  if (token == null) return res.sendStatus(401);

  jwt.verify(token, secret, (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
}

Em resumo, JWT é uma ferramenta poderosa para autenticação e autorização em APIs NodeJS. Ele permite que você crie tokens que podem ser usados para autenticar usuários e autorizá-los a acessar rotas, serviços e recursos. A implementação do JWT em NodeJS é simples graças a pacotes como o jsonwebtoken.

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

Qual é a principal função do JSON Web Tokens (JWT) na criação de APIs 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: O que são JSON Web Tokens (JWT) 110

Próxima página do Ebook Gratuito:

Trabalhando com JSON Web Tokens (JWT) em NodeJS: O que são JSON Web Tokens (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