DEV Community

pcgustavo7
pcgustavo7

Posted on Edited on

JWT: a pulseira de acesso da sua aplicação

Um JWT (JSON Web Token) funciona de maneira parecida com uma pulseira de acesso em um resort.

Quando você chega ao resort e apresenta seus documentos na recepção, o hotel confirma sua identidade. No mundo digital, isso seria o momento em que você faz login com usuário e senha.

Depois de confirmar sua identidade, o hotel coloca uma pulseira no seu braço.

```text id="jwt001"
👤 Usuário
│
│ Login + senha
▼
🔐 Sistema
│
│ Identidade confirmada
▼
🎫 JWT




A partir desse momento, você não precisa apresentar seus documentos toda vez que quiser utilizar algum serviço do resort.

### Como funciona?

Imagine que você queira entrar no restaurante:



```text id="jwt002"
👤 Você
  │
  ▼
🍽️ Restaurante
  │
  ▼
🎫 "Possui pulseira?"
  │
  ├── ✅ Sim → Entrada permitida
  │
  └── ❌ Não → Acesso negado
Enter fullscreen mode Exit fullscreen mode

No mundo digital, acontece algo parecido:

```text id="jwt003"
👨‍💻 Usuário
│
▼
🌐 Aplicação
│
▼
🎫 JWT
│
▼
🔐 Verifica o token
│
├── ✅ Válido → Acesso permitido
│
└── ❌ Inválido → Acesso negado




O JWT acompanha as requisições feitas pelo usuário e permite que o sistema verifique se ele está autenticado.

### O que existe dentro de um JWT?

O token pode carregar informações sobre o usuário e sobre o acesso dele.

Por exemplo:



```text id="jwt004"
🎫 JWT

👤 Usuário: João
🔑 Função: Administrador
📅 Expiração: 30/09/2026
Enter fullscreen mode Exit fullscreen mode

Essas informações são chamadas de claims.

É importante lembrar que um JWT não deve ser usado para guardar senhas ou informações secretas. O token pode ser lido por quem o possui, então os dados armazenados nele devem ser escolhidos com cuidado.

Por que usar JWT?

Uma das vantagens é que a aplicação pode verificar o token sem precisar consultar o banco de dados (lembrando que mesmo utilizando JWT, ainda sim a aplicação pode consultar o banco) a cada requisição.

Por exemplo:

```text id="jwt005"
Sem JWT

👤 Usuário
│
▼
🌐 Sistema
│
▼
🗄️ Banco de Dados
│
▼
"Esse usuário está logado?"




Com JWT:



```text id="jwt006"
Com JWT

👤 Usuário
    │
    ▼
🌐 Sistema
    │
    ▼
🎫 JWT
    │
    ▼
✅ Token válido
Enter fullscreen mode Exit fullscreen mode

Isso pode ajudar a tornar o processo de autenticação mais simples e eficiente.

JWT e permissões

O JWT também pode carregar informações relacionadas às permissões do usuário.

Por exemplo:

```text id="jwt007"
🎫 JWT
│
├── 👤 Usuário: João
└── 🔑 Função: Administrador
│
▼
🛠️ Painel administrativo
│
▼
✅ Acesso




Enquanto outro usuário pode ter apenas acesso a funcionalidades comuns:



```text id="jwt008"
🎫 JWT
   │
   ├── 👤 Usuário: Maria
   └── 👤 Função: Usuário
                │
                ▼
        🛠️ Painel administrativo
                │
                ▼
             ❌ Acesso
Enter fullscreen mode Exit fullscreen mode

JWT é a mesma coisa que login?

Não exatamente.

O login é o processo de confirmar a identidade do usuário.

O JWT é o token gerado após essa autenticação, que pode ser utilizado para representar aquela sessão/autorização nas próximas requisições.

```text id="jwt009"
🔐 Login
│
▼
✅ Identidade confirmada
│
▼
🎫 JWT
│
▼
🌐 Próximas requisições




### Resumindo

> **JWT é um token utilizado para transmitir informações de autenticação e autorização entre sistemas.**

Ele funciona como uma **pulseira de acesso**: depois que sua identidade é confirmada, você utiliza a pulseira para acessar os serviços permitidos sem precisar apresentar seus documentos novamente a cada momento.

### Exemplo do dia a dia 🏨

No resort:



```text
📄 Documento
     │
     ▼
🏨 Recepção
     │
     ▼
🎫 Pulseira
     │
 ┌───┼────┐
 ▼   ▼    ▼
🍹  🍽️   🏊
Enter fullscreen mode Exit fullscreen mode

No software:

🔐 Login
    │
Enter fullscreen mode Exit fullscreen mode

Top comments (0)