O que é JWT? \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 00 Horas 

 48 Min 

 02 Seg 

   Tempo restante da oferta: 00 48 02 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) O que é JWT?  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

# O que é JWT?

 Neste artigo iremos falar sobre o que é, qual a estrutura e onde são utilizados os JSON Web Tokens ou como comumente são conhecidos JWT.

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 5 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/07/o-que-e-jwt.png)  

Segurança deve ser um ponto vital para qualquer aplicação web. Não importando o tamanho, ela sempre conterá dados que necessitam de alguma proteção. APIs também se enquadram neste quesito, mas as formas tradicionais de autenticação, baseadas em telas de login e sessão, não podem ser aplicadas neste tipo de aplicação.

Tendo isso em vista a forma mais comum de realizar a autenticação e autorização em APIs é através do Token Based Authentication que utiliza um token JWT, mas antes que possamos falar sobre o processo de autenticação e autorização via JWT é necessário entender o que é e qual a estrutura do JWT ou JSON Web Token.

Para um pleno entendimento do conteudo exposto neste artigo recomendo que possua uma prévio conhecimento nos seguintes assuntos:

- **JSON:** Caso queira saber mais sobre esse tema eu recomendo a leitura do artigo [O que é JSON?](https://www.treinaweb.com.br/blog/o-que-e-json)
- **APIs:** Caso queira saber mais sobre esse tema eu recomendo a leitura do artigo [O que é uma API?](https://www.treinaweb.com.br/blog/o-que-e-uma-api)
- **Autenticação e Autorização:** Caso queira saber mais sobre esse tema eu recomendo a leitura do artigo [Autenticação x Autorização](https://www.treinaweb.com.br/blog/autenticacao-x-autorizacao)

[  ![Spring Framework - Spring Security](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/spring-boot.svg)   Curso Spring Framework - Spring Security Conhecer o curso ](https://www.treinaweb.com.br/curso/spring-framework-spring-security)

## O que é JWT?

JWT ou JSON Web Token é um padrão da indústria definido pela [RFC7519](https://datatracker.ietf.org/doc/html/rfc7519) que tem como objetivo transmitir ou armazenar de forma compacta e segura objetos JSON entre diferentes aplicações. O JWT é digitalmente assinado usando uma chave secreta com o algoritmo HMAC ou um par de chaves pública e privada RSA ou ECDSA.

## Quando devo usar JWT?

O JSON Web Token é utilizado em dois principais cenários, quando queremos realizar um processo de autorização em nossa aplicação ou quando queremos realizar troca de informações, abaixo detalhamos um pouco mais sobre o uso do JWT em cada um dos cenários citados.

- **Autorização:** Este é o cenário mais comum para o uso do JWT. Depois que o usuário estiver autenticado, cada requisição subsequente incluirá o JWT, permitindo que o usuário acesse rotas, serviços e recursos permitidos com esse token.
- **Troca de Informações:** JSON Web Tokens são uma boa maneira de transmitir informações com segurança entre as partes. Como os JWTs podem ser assinados, por exemplo, usando pares de chaves pública e privada podemos garantir que os remetentes são quem dizem ser.

## Qual a estrutura do JWT?

Em sua forma compactada, JSON Web Tokens consistem em três partes separadas por pontos (.), Que são:

- Header
- Payload
- Signature

Portanto, um JWT normalmente se parece com o seguinte: `xxxxx.yyyyy.zzzzz`.

Cada uma das partes que compõem o JWT será detalhada abaixo.

### Header

O header ou cabeçalho normalmente consiste em duas partes: o tipo de token, que é JWT e o algoritmo de assinatura que está sendo utilizado, como HMAC SHA256 ou RSA.

Por exemplo:

```json
{
  "alg": "HS256",
  "typ": "JWT"
}

```

Por mais que o header seja composto geralmente pelas duas partes citadas acima, não obrigatoriamente todo token JWT contém a informação do tipo do token, a informação que de fato não pode faltar é a que diz qual o algoritmo de assinatura utilizado.

Inclusive, boa parte das bibliotecas utilizadas para gerar tokens JWT não incluem a informação do tipo do token no header do mesmo, um exemplo disso seria a biblioteca `jjwt` bastante utilizada em aplicações Java.

### Payload

A segunda parte do token é o payload ou corpo, que contém as claims. As claims são declarações sobre uma entidade (normalmente, o usuário) e dados adicionais.

Um exemplo de um payload pode ser:

```json
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

```

Aqui também vale uma ressalva, o corpo do token JWT é composto por informações opcionais, ou seja, por informações que a aplicação que gerou o token deseja informar, com exceção da chave `sub` que é de fato obrigatória, pois a mesma é um identificador da entidade a qual o token se refere.

Quando falamos do JWT sendo utilizado para realizar autenticação em APIs, o `sub` geralmente irá conter o nome do usuário que está tentando acessar os recursos da aplicação, além do `sub` também é comum possuir a chave `iat` (issued at) que possui uma informação de data e hora no formato timestamp com o momento em que o token foi gerado e também possuirá a chave `exp` (expire) que possui a informação de data e hora também no formato de timestamp com o momento em que este token irá expirar.

### Signature

Para criar a parte da assinatura, você deve pegar o cabeçalho codificado, o payload codificado, a chave secreta, o algoritmo especificado no cabeçalho e assiná-lo.

Por exemplo, se você deseja usar o algoritmo HMAC SHA256, a assinatura será criada da seguinte maneira:

```jsx
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

```

### Colocando tudo junto

A saída são três strings Base64-URL separadas por pontos que podem ser facilmente passadas em ambientes HTML e HTTP, embora sejam mais adequadas aos padrões baseados em XML ou REST.

O seguinte mostra um JWT que tem o cabeçalho anterior e payload codificados e é assinado com uma chave secreta.

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

```

[  ![Django - Desenvolvimento de APIs REST](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/django.svg)   Curso Django - Desenvolvimento de APIs REST Conhecer o curso ](https://www.treinaweb.com.br/curso/django-desenvolvimento-de-apis-rest)

## Especificações da familia JOSE

O JWT faz parte de uma família de especificações chamada JOSE (JSON Object Signing and Encryption), as especificações que fazem parte dessa família são:

- **JWT (JSON Web Token):** Representa o token propriamente dito;
- **JWS (JSON Web Signature):** Representa a assinatura do token;
- **JWE (JSON Web Encryption):** Representa a assinatura para criptografia do token;
- **JWK (JSON Web Keys):** Representa as chaves para a assinatura;
- **JWA (JSON Web Algorithms):** Representa os algoritmos para assinatura do token;

## Por que usar o JWT?

O JWT desde o momento de sua criação ganhou bastante popularidade e atualmente é uma das maneiras mais utilizadas de realizar troca de informações e autorização em APIs, essa popularidade se dá principalmente por dois fatores:

- Utiliza JSON, que é amplamente utilizado, simples de manipular em qualquer linguagem e leve para ser transportado pela rede;
- Seguro, pois é possível verificar se o conteúdo é válido a partir do próprio token e no caso do token ser assinado com um par de chaves pública e privada é também possível verificar se o remetendo do token é quem diz ser;

[  ![Laravel - Desenvolvimento de APIs REST](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/laravel.svg)   Curso Laravel - Desenvolvimento de APIs REST Conhecer o curso ](https://www.treinaweb.com.br/curso/laravel-desenvolvimento-de-apis-rest)

## Conclusão

Neste artigo vimos o que é o JSON Web Token e as especificações que a permeiam, também vimos a sua estrutura e os principais cenários de uso. O JWT é uma tecnologia bastante utilizada em cenários reais e por isso é bastante importante que toda desenvolvedora ou desenvolvedor tenha conhecimento da mesma.

- [ #JSON ](https://www.treinaweb.com.br/blog/tag/json)
- [ #Autenticação ](https://www.treinaweb.com.br/blog/tag/autenticacao)
- [ #autorização ](https://www.treinaweb.com.br/blog/tag/autorizacao)
- [ #JWT ](https://www.treinaweb.com.br/blog/tag/jwt)
- [ #JSON Web Token ](https://www.treinaweb.com.br/blog/tag/json-web-token)

Autor

 ![Cleyson Lima](//secure.gravatar.com/avatar/db30efb102ffa5d5204cebe12060b111?d=mm)

## Cleyson Lima

 Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/cleyson-lima)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/NEST-JS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Autenticação: Geração de Token JWT com NestJS e Passport ](https://www.treinaweb.com.br/blog/autenticacao-geracao-de-token-jwt-com-nestjs-e-passport) 

     Neste artigo vamos criar uma aplicação para a geração de Tokens JWT utilizando NestJS e a biblioteca Passport.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/07/fluxo-de-autenticacao-baseado-em-jwt-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     5 anos atrás

    ##  [ Fluxo de autenticação baseado em JWT ](https://www.treinaweb.com.br/blog/fluxo-de-autenticacao-baseado-em-jwt) 

     Neste artigo iremos aprender de teórica como é o fluxo de autenticação baseado em JWT dentro de uma API REST.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/05/autenticação-jwt-em-api-jax-rs-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     7 anos atrás

    ##  [ Implementando autenticação baseada em JWT em uma API RESTful JAX-RS ](https://www.treinaweb.com.br/blog/implementando-autenticacao-baseada-em-jwt-em-uma-api-restful-jax-rs) 

     Segurança é um item essencial e uma forma de limitar o acesso da aplicação é através de autenticação, que uma API JAX-RS pode implementar através do JWT.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/12/NEST-JS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Autenticação: Protegendo Rotas com NestJS e Passport ](https://www.treinaweb.com.br/blog/autenticacao-protegendo-rotas-com-nestjs-e-passport) 

     Neste artigo vamos aprender a proteger rotas com o NestJS e a biblioteca passport, utilizando a estratégia de autenticação com Tokens JWT.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Guia do framework NestJS ](https://www.treinaweb.com.br/blog/guia-do-framework-nestjs) 

     Neste guia do framework NestJS vamos fazer um compilado de tópicos úteis sobre o framework, desde criar um projeto básico até autenticação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/12/NEST-JS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Autenticação: Refresh Token com NestJS ](https://www.treinaweb.com.br/blog/autenticacao-refresh-token-com-nestjs) 

     Neste artigo vamos continuar no assunto de autenticação, abordando a estratégia de refresh token com o NestJS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/04112944/DJANGO-PROJETOS-PYCHARM-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     2 anos atrás

    ##  [ Validação de dados em aplicações Django ](https://www.treinaweb.com.br/blog/validacao-de-dados-em-aplicacoes-django) 

     Aprenda como trabalhar com validação de dados em aplicações Django, utilizando validações padrões e customizadas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/10/30133314/swagger-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     8 anos atrás

    ##  [ Documentando uma ASP.NET Core Web API com o Swagger ](https://www.treinaweb.com.br/blog/documentando-uma-asp-net-core-web-api-com-o-swagger) 

     Aprenda a documentar uma aplicação ASP .NET Core Web API com o Swagger.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/07/aplicando-hateoas-em-uma-api-jax-rs-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Aplicando HATEOAS em uma API JAX-RS ](https://www.treinaweb.com.br/blog/aplicando-hateoas-em-uma-api-jax-rs) 

     Veja como implementar o HATEOAS em uma aplicação JAX-RS-Jersey de forma simples com os recursos fornecidos por esta especificação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2024/04/sistemas-mensageria-min-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     3 anos atrás

    ##  [ O que é e quais as diferenças entre Kafka, RabbitMQ e AWSSQS ](https://www.treinaweb.com.br/blog/o-que-e-e-quais-as-diferencas-entre-kafka-rabbitmq-e-awssqs) 

     Confira nesse artigo o que são sistemas de mensageria, o que são e quais as diferenças entre Kafka, RabbitMQ e AWSSQS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/12/TS-ZOD-400x280.jpg)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     3 anos atrás

    ##  [ O que é o Zod? ](https://www.treinaweb.com.br/blog/o-que-e-o-zod) 

     Neste artigo vamos ter uma introdução sobre o Zod, uma biblioteca de declaração e validação de dados em TypeScript e criar um exemplo de como utilizá-la.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/11/Clean-Architecture-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     3 anos atrás

    ##  [ O que vem a ser a Clean Architecture? ](https://www.treinaweb.com.br/blog/o-que-vem-a-ser-a-clean-architecture) 

     Confira nesse artigo uma introdução do que é a Clean Architecture, quais seus componentes e os benefícios ao utilizar essa arquitetura.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **00h 48min 02s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
