17.1. Autenticação e autorização em API's NodeJS: Autenticação com JWT

Página 99

17.1. Autenticação e Autorização em APIs NodeJS: Autenticação com JWT

Autenticação e autorização são elementos cruciais na criação de APIs em NodeJS. Elas garantem a segurança dos dados manipulados pela API, permitindo apenas que usuários autorizados acessem determinados recursos. Este capítulo do e-book se concentrará na autenticação com JWT (JSON Web Tokens).

O que é JWT?

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.

Por que usar JWT para Autenticação?

JWTs são uma boa opção para autenticação por várias razões. Primeiro, eles são stateless. Isso significa que não precisamos armazenar informações de sessão no servidor ou em um banco de dados. Em vez disso, todas as informações necessárias são armazenadas no token e são enviadas ao servidor a cada solicitação. Isso permite que nossa aplicação seja escalável e fácil de gerenciar.

Em segundo lugar, JWTs são compactos e podem ser enviados através de uma URL, em um cabeçalho HTTP, ou em um cookie. Isso os torna muito convenientes para autenticação, especialmente em aplicações de página única (SPA).

Como funciona a Autenticação com JWT?

A autenticação com JWT geralmente envolve os seguintes passos:

  1. O usuário envia suas credenciais para o servidor.
  2. O servidor verifica as credenciais e, se forem válidas, gera um JWT que é enviado de volta ao usuário.
  3. O usuário armazena o JWT de alguma forma (por exemplo, em um cookie ou no armazenamento local).
  4. O usuário envia o JWT em cada solicitação subsequente ao servidor.
  5. O servidor verifica o JWT e, se for válido, processa a solicitação.
  6. Se o JWT não for válido (por exemplo, se expirou), o servidor rejeita a solicitação.

Implementando Autenticação com JWT em NodeJS

Para implementar a autenticação com JWT em NodeJS, precisamos do pacote jsonwebtoken. Podemos instalá-lo usando npm:


npm install jsonwebtoken

Uma vez que o pacote está instalado, podemos usá-lo para gerar e verificar JWTs. Aqui está um exemplo de como podemos fazer isso:


const jwt = require('jsonwebtoken');

// Generate a JWT
const token = jwt.sign({ id: user.id }, 'your-secret-key', { expiresIn: '1h' });

// Verify a JWT
try {
  const decoded = jwt.verify(token, 'your-secret-key');
  console.log(decoded.id); // will print the id of the user
} catch (err) {
  console.error('Invalid token');
}

A função jwt.sign() gera um JWT. Ela recebe três argumentos: o payload (um objeto que contém as informações que queremos armazenar no token), o segredo (uma string usada para assinar o token), e as opções (um objeto que pode conter várias propriedades, como expiresIn, que define quando o token expira).

A função jwt.verify() verifica um JWT. Ela recebe dois argumentos: o token e o segredo. Se o token for válido, ela retorna o payload. Se não for válido, ela lança um erro.

Em resumo, a autenticação com JWT em NodeJS é um processo simples e eficaz que pode melhorar significativamente a segurança de suas APIs. Com o JWT, você pode garantir que apenas usuários autorizados tenham acesso a determinados recursos, tornando sua aplicação mais segura e confiável.

Now answer the exercise about the content:

O que é necessário para implementar a autenticação com JWT em NodeJS?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

10017.2. Autenticação e autorização em API's NodeJS: Autorização com roles e permissões

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text