Apidog

All-in-one Collaborative API Development Platform

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Inscreva-se gratuitamente
Home / Ponto de vista / O que é JWT e como funciona?

O que é JWT e como funciona?

Os JSON Web Tokens (JWTs) são uma forma compacta e segura para URLs de representar credenciais a serem transferidas entre duas partes. Essas credenciais são frequentemente usadas para garantir a integridade e autenticidade das informações.

JSON Web Tokens (JWTs) são um meio compacto e seguro para URLs de representar alegações a serem transferidas entre duas partes. Essas alegações são frequentemente utilizadas para garantir a integridade e a autenticidade das informações.

Este artigo explora como os JWTs funcionam. Vamos examinar a estrutura de um JWT, que consiste em três partes codificadas e assinadas digitalmente. Em seguida, discutiremos casos de uso comuns para os JWTs e revisaremos alguns dos benefícios de usá-los,

A Estrutura de um JWT (Com Exemplo)

Um JSON Web Token (JWT) consiste em três partes separadas por pontos: Cabeçalho, Payload e Assinatura. A estrutura geral é:

xxxxxxxxxx.yyyyyyyyyy.zzzzzzzzzz

Cabeçalho:

  • O cabeçalho geralmente consiste em duas partes: o tipo do token, que é JWT, e o algoritmo de assinatura utilizado, como HMAC SHA256 ou RSA.
  • Exemplo de Cabeçalho (codificado em base64): eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload:

  • O payload contém alegações. Alegações são declarações sobre uma entidade (normalmente, o usuário) e dados adicionais.
  • Existem três tipos de alegações: alegações registradas, públicas e privadas.
  • Exemplo de Payload (codificado em base64): eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ

Assinatura:

  • Para criar a parte da assinatura, você precisa pegar o cabeçalho codificado, o payload codificado, um segredo, o algoritmo especificado no cabeçalho e assinar isso.
  • A assinatura é usada para verificar se o remetente do JWT é quem diz ser e para garantir que a mensagem não foi alterada ao longo do caminho.
  • Exemplo de Assinatura: HMACSHA256(base64UrlEncode(cabeçalho) + "." + base64UrlEncode(payload), segredo)

Juntando tudo:

Cabeçalho: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Assinatura: HMACSHA256(base64UrlEncode(cabeçalho) + "." + base64UrlEncode(payload), segredo)

JWT codificado:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwia

Os Benefícios de usar JWT:

JWTs contêm objetos JSON que são codificados e assinados, garantindo integridade e autenticidade sem depender de sessões com estado no servidor.

Alguns dos principais benefícios que tornam os JWTs úteis são:

  • Tamanho compacto devido à codificação JSON segura para URLs, para eficiência de espaço
  • Autocontido com todas as informações necessárias do usuário para evitar consultas excessivas ao banco de dados
  • Assinaturas digitais para segurança à prova de adulterações e verificação de autenticidade
  • Natureza sem estado para melhorar a escalabilidade ao remover sessões do lado do servidor
  • Interoperabilidade universal com analisadores JSON disponíveis na maioria das linguagens
  • Extensível por meio de campos de dados personalizados sem quebrar estruturas existentes

JWT vs OAuth: a Diferença entre JWT e OAuth

JWT (JSON Web Token) e OAuth estão relacionados, mas servem a propósitos diferentes no contexto de autenticação e autorização no desenvolvimento web. Aqui está uma breve comparação entre JWT e OAuth:

JWT (JSON Web Token):

  1. Propósito: JWT é uma forma compacta e autocontida de transmitir informações entre partes de forma segura. É comumente usado para autenticação e troca de informações.
  2. Conteúdo: JWT contém alegações sobre uma entidade (normalmente, um usuário) e é frequentemente usado para autenticação de usuários. As alegações podem incluir ID do usuário, papéis, permissões e outras informações relevantes. Os JWTs são frequentemente usados para criar sistemas de autenticação sem estado.
  3. Uso: Os JWTs geralmente são enviados como parte dos cabeçalhos da solicitação em requisições HTTP. Eles são usados para representar a identidade e os privilégios do usuário.

OAuth (Autorização Aberta):

  1. Propósito: OAuth é uma estrutura para autorização, permitindo que um aplicativo de terceiros acesse os recursos de um usuário em outro servidor sem expor as credenciais do usuário. OAuth não é projetado para autenticação, mas para delegação de autoridade.
  2. Papeis: OAuth define papéis como Proprietário de Recurso, Cliente, Servidor de Autorização e Servidor de Recursos. Ele possibilita cenários em que um usuário pode conceder acesso aos seus recursos (por exemplo, fotos, contatos) a outro aplicativo sem compartilhar suas credenciais.
  3. Tipos de Concessão: OAuth introduz tipos de concessão (código de autorização, implícito, credenciais de cliente, senha, etc.) para especificar como o processo de autorização deve ser realizado.
  4. Tokens: OAuth envolve o uso de tokens de acesso e tokens de atualização. Os tokens de acesso são usados para acessar recursos protegidos, e os tokens de atualização podem ser usados para obter um novo token de acesso.

Principais Diferenças:

  • Propósito: JWT é usado principalmente para autenticação e troca de informações, enquanto OAuth é uma estrutura para autorização.
  • Conteúdo: JWT contém alegações sobre um usuário, enquanto OAuth se concentra em definir papéis e permissões e gerenciar o acesso aos recursos.
  • Papeis: JWT é frequentemente usado para representar a identidade do usuário, enquanto OAuth envolve papéis como Proprietário de Recurso, Cliente, Servidor de Autorização e Servidor de Recursos.
  • Tokens: JWT é um tipo de token usado para autenticação, enquanto OAuth introduz tokens de acesso e tokens de atualização para gerenciar autorização.

Como o JWT Funciona?

JSON Web Tokens (JWTs) desempenham um papel fundamental na autenticação, proporcionando uma maneira segura e eficiente de verificar a identidade dos usuários. O processo normalmente envolve os seguintes passos:

  1. Autenticação do Usuário: Os usuários fazem login usando seu nome de usuário e senha ou através de provedores externos como Google ou Facebook. O servidor de autenticação valida as credenciais e emite um JSON Web Token (JWT) certificando a identidade do usuário.
  2. Geração de JWT: O provedor de identidade (IdP) gera um JWT, assinando-o com um sal secreto ou uma chave privada. Este JWT encapsula informações essenciais do usuário, como ID do usuário, papéis e tempo de expiração.
  3. Uso de JWT: O cliente do usuário armazena de forma segura o JWT obtido durante a autenticação. Ao acessar recursos protegidos, o cliente inclui o JWT no cabeçalho HTTP de Autorização.
  4. Verificação do Token: O servidor de recursos decodifica e verifica a autenticidade do JWT usando o sal secreto ou a chave pública fornecida. Este processo garante a integridade e a origem do token.

JWT no Apidog

Apidog é uma ferramenta de desenvolvimento e teste de API amigável que se destaca na gestão de JSON Web Tokens (JWT). Com sua interface intuitiva, o Apidog simplifica o processo de manuseio de JWTs, fornecendo suporte automático para geração de tokens, gerenciamento dinâmico e inclusão perfeita em requisições de API.

JWT

Esta ferramenta agiliza os aspectos relacionados a JWT do desenvolvimento de API, permitindo que os desenvolvedores se concentrem em testes e integrações eficientes dentro de seus fluxos de trabalho.

button

Junte-se à Newsletter da Apidog

Inscreva-se para ficar atualizado e receber os últimos pontos de vista a qualquer momento.