🔐 Cap 18: Login na Arena: Auth e Tokens

🎯 Objetivo da Aula: Ao final desta aula, você entenderá como os aplicativos mantêm você “logado” com segurança. Você aprenderá o que é um Token JWT e como enviá-lo para o servidor para provar que você é você mesmo antes de entrar em uma batalha online.


🏢 O Cenário Prático (Seu Desafio): Hackers estão tentando burlar o ranking do seu jogo enviando pontuações falsas! Eles fazem isso fingindo que são outros jogadores. Seu desafio é implementar a Trava de Segurança: o jogador deve fazer login com senha e receber um “Cartão de Acesso” (o Token). O servidor só aceitará comandos de quem mostrar esse cartão.


🧠 Fundamentos: A Teoria Traduzida

📖 Dicionário do Programador

  • Autenticação: É o ato de provar quem você é (usando login e senha).
  • Token JWT: É como um “Crachá Digital”. Ele contém seus dados criptografados e uma assinatura do servidor que ninguém consegue falsificar.
  • Bearer Token: É o nome técnico do crachá. Significa: “Eu sou o portador (bearer) deste token, me deixe entrar”.

🎨 Padrão de Cabeçalho (Header)

Toda vez que você pede algo ao servidor (como ver seus itens), você coloca o token num “envelope” invisível chamado HTTP Header, na chave Authorization.

graph TD
    A[App: Envia Senha] --> B[Servidor: Valida]
    B --> C[Entrega Crachá: JWT]
    C --> D[App: Salva o Crachá]
    D --> E[Próxima Chamada: Mostra Crachá]

🏗️ Construindo o Projeto (Checklist Studio)

No seu código que chama a API (Retrofit), você deve adicionar o cabeçalho: Authorization: Bearer <SEU_TOKEN>


📖 Exemplo Passo a Passo: Formatando o Crachá

fun prepararCabecalho(token: String): String {
    // Adicionamos a palavra mágica 'Bearer' antes do código
    return "Bearer $token"
}
 
fun main() {
    val meuToken = "abc123xyz"
    println(prepararCabecalho(meuToken)) 
    // Resultado: Bearer abc123xyz
}

🛠️ Prática Obrigatória 1: Crie uma função chamada gerarHeader. Ela recebe uma String token e retorna a String formatada para o cabeçalho. Teste com o token "pokedex_gold_2026".


🛠️ Prática Obrigatória 2: Pesquise e anote: Por que é perigoso deixar o Token guardado para sempre no celular? O que é o “tempo de expiração” de um token?


🔑 Gabarito Passo a Passo:

Exercício 2: O token expira para que, se alguém roubar o seu celular, o “crachá” pare de funcionar depois de algum tempo (ex: 1 hora), obrigando um novo login.

📤 Instruções de Entrega (Microsoft Teams):

  1. Envie o código da sua função de Header.
  2. Envie sua resposta sobre a expiração de tokens.
  3. Submeta no canal de tarefas.

Capitulo Anterior | Proximo Capitulo