🚀 Capítulo 13: Autenticação com JWT (Tema: Cyberpunk 2077)

NOTE

Este capítulo utiliza a temática de Cyberpunk 2077 para explicar o JWT. Em Night City, você não usa crachá; você usa um chip de acesso digital que prova quem você é!


1. 🎯 Objetivo da Aula

Compreender o conceito de autenticação baseada em token utilizando JWT (JSON Web Token), sua estrutura e como ele garante a segurança sem estado (stateless).

2. 🏢 O Cenário Prático (Seu Desafio)

Você é um mercenário em Night City tentando invadir a rede da Arasaka. Para passar pelas portas de segurança, você não pode usar uma chave física. Você precisa de um Chip de Acesso (um Token JWT). Esse chip contém o seu ID de usuário e o seu nível de acesso. O sistema lê o chip e sabe se você pode entrar ou não, sem precisar perguntar para a base central toda hora. Seu desafio é entender como esse chip é gerado e lido!

3. 🧠 Fundamentos: A Teoria Traduzida

JWT significa JSON Web Token. É um padrão da indústria para transmitir informações de forma segura entre as partes como um objeto JSON.

🧩 As 3 Partes do Chip (Token):

Um token JWT é uma string longa dividida por dois pontos (.). Cada parte tem uma função:

  1. Header (Cabeçalho): Diz qual é o tipo do token (JWT) e qual algoritmo de segurança foi usado.
  2. Payload (Carga Útil): Contém os dados que você quer guardar (ex: ID do usuário, nome, data de expiração). Cuidado: qualquer um pode ler esses dados, então não guarde senhas aqui!
  3. Signature (Assinatura): É a parte que garante que o token não foi falsificado. Ela é gerada juntando o Header, o Payload e uma Chave Secreta que só o seu servidor conhece.

🔄 O Fluxo:

  1. Você faz login com usuário e senha.
  2. O servidor valida e gera um Token JWT (Chip).
  3. Você guarda esse token (geralmente no navegador).
  4. Em toda nova requisição, você envia esse token.
  5. O servidor valida a assinatura e te dá acesso.

4. 📖 Exemplo Guiado: Visualizando o Token

Um token real se parece com isto: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

  • Em vermelho: Header.
  • Em azul: Payload.
  • Em verde: Signature.

5. 🛠️ Prática Obrigatória 1: Dessecando o Token

Acesse o site jwt.io (ou pesquise sobre a estrutura), cole o token do exemplo guiado lá e veja o que está escrito no Payload. Qual é o nome do usuário que está dentro desse token?

6. 🛠️ Prática Obrigatória 2: O Perigo da Chave Secreta

O que aconteceria se um hacker descobrisse a Chave Secreta que o seu servidor usa para assinar os tokens? (Dica: Pense se ele conseguiria criar chips falsos).


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 13 Backend) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_07_backend_e_apis/
├── capitulos/
│   ├── capitulo_13_jwt.md
│   └── codigos/
│       └── cap13/
│           └── analise_token.txt

9. 💡 Checkpoint de Lógica

Por que o JWT é perfeito para arquiteturas Stateless (sem estado)? (Dica: Onde estão guardados os dados do usuário logado? No servidor ou no próprio token?).

10. 🔥 Desafio de Fixação

Pesquise o que significa o termo Bearer Token e como ele é enviado no cabeçalho Authorization de uma requisição HTTP.

11. 🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1: O nome do usuário no payload é "John Doe".


Capitulo Anterior | Proximo Capitulo