🔐 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):
- Envie o código da sua função de Header.
- Envie sua resposta sobre a expiração de tokens.
- Submeta no canal de tarefas.