🚀 Capítulo 04: Autenticação e Autorização (Tema: Senhor dos Anéis)
NOTE
Este capítulo utiliza a temática de Senhor dos Anéis para explicar a diferença entre Autenticação e Autorização. Dizer a palavra mágica prova quem você é; mas só os autorizados podem passar pela ponte!
1. 🎯 Objetivo da Aula
Compreender a diferença crucial entre Autenticação (provar quem você é) e Autorização (o que você tem permissão para fazer), e como aplicar esses conceitos no desenvolvimento seguro.
2. 🏢 O Cenário Prático (Seu Desafio)
Você está na jornada para destruir o anel e encontra duas situações clássicas:
- As Portas de Moria: Para as portas se abrirem, você precisa dizer a palavra mágica: “Mellon” (Amigo). O sistema de segurança das portas verifica se você sabe a “senha” para provar que você é um amigo. Isso é Autenticação.
- A Ponte de Khazad-dûm: Gandalf bate o cajado e grita para o Balrog: “You shall not pass!” (Você não vai passar!). O Balrog pode até provar que ele é o Balrog (Autenticação bem-sucedida), mas ele não tem permissão para atravessar a ponte. Isso é Autorização.
No software, misturar esses dois conceitos é um erro grave que gera muitas falhas de segurança. Seu desafio é manter o Balrog do lado de fora!
3. 🧠 Fundamentos: A Teoria Traduzida
Embora pareçam a mesma coisa, Autenticação e Autorização são processos completamente diferentes e complementares.
🔑 1. Autenticação (Quem é você?):
É o processo de verificar a identidade de um usuário ou sistema.
- Os 3 Fatores de Autenticação:
- O que você sabe: Uma senha, um PIN ou a resposta para uma pergunta secreta.
- O que você tem: Um token físico, o seu celular (para receber SMS) ou um cartão de acesso.
- O que você é: Sua digital, reconhecimento facial ou leitura de íris (Biometria).
- Exemplo: Digitar usuário e senha em um site.
🛡️ 2. Autorização (O que você pode fazer?):
É o processo de verificar se um usuário já autenticado tem permissão para acessar um recurso específico ou realizar uma ação.
- Como funciona: Geralmente baseado em Perfis de Acesso (Roles). Ex: Usuário comum, Moderador, Administrador.
- Exemplo: Um usuário comum tenta acessar a página
/admine o sistema bloqueia dizendo “Acesso Negado”.
4. 📖 Exemplo Guiado: O Teste de Acesso (JS)
Veja como esses dois conceitos se traduzem no código:
// Simulação de Autenticação e Autorização
const usuario = {
nome: "Frodo",
senhaSalva: "123456",
perfil: "membro_comum" // ou "admin"
};
// 1. AUTENTICAÇÃO
function fazerLogin(nome, senhaDigitada) {
if (nome === usuario.nome && senhaDigitada === usuario.senhaSalva) {
console.log("✅ Autenticação realizada com sucesso! Bem-vindo, " + nome);
return true;
} else {
console.log("❌ Falha na Autenticação! Senha incorreta.");
return false;
}
}
// 2. AUTORIZAÇÃO
function acessarAreaRestrita(perfilUsuario) {
if (perfilUsuario === "admin") {
console.log("🔓 Acesso Autorizado à área restrita.");
} else {
console.log("🚧 Bloqueado! Você não tem autorização para passar por aqui.");
}
}
// Execução
if (fazerLogin("Frodo", "123456")) {
acessarAreaRestrita(usuario.perfil); // Frodo passará pela autenticação, mas será bloqueado na autorização!
}5. 🛠️ Prática Obrigatória 1: Autenticação ou Autorização?
Diga se a situação descreve uma falha de Autenticação ou de Autorização:
- Um usuário comum conseguiu digitar um link direto no navegador e acessou a página onde podia apagar a conta de outros usuários.
- Um hacker conseguiu descobrir a senha do administrador porque ela era muito fácil (
123456) e não havia limite de tentativas de login.
6. 🛠️ Prática Obrigatória 2: Os Fatores de Segurança
O WhatsApp e o Instagram usam a chamada “Autenticação em Duas Etapas” (MFA).
- Quais são os 2 fatores (da lista do que você sabe, tem ou é) que estão sendo combinados quando você digita sua senha e depois digita o código que chegou por SMS no seu celular?
- Por que isso é muito mais seguro do que usar apenas a senha?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 04 Seguranca) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_12_desenvolvimento_seguro/
├── capitulos/
│ ├── capitulo_04_autenticacao.md
│ └── codigos/
│ └── cap04/
│ └── login_sistema.js💡 Checkpoint de Lógica
Regra de Ouro da Autorização: Princípio do Menor Privilégio. Um usuário só deve ter permissão para acessar aquilo que é estritamente necessário para ele fazer o seu trabalho. Nada a mais!
10. 🔥 Desafio de Fixação
Pesquise sobre o que significa a sigla RBAC (Role-Based Access Control) e como ela ajuda a organizar as permissões em sistemas grandes.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Autorização (Ele provou quem era, mas o sistema deixou ele fazer algo que não devia).
- Autenticação (A porta de entrada estava fraca e permitiu que um estranho fingisse ser o administrador). Gabarito da Prática 2:
- O que você sabe (A senha) + O que você tem (O celular que recebe o SMS).
- Porque mesmo que o hacker descubra a sua senha, ele não conseguirá entrar na conta a menos que também tenha roubado o seu aparelho celular físico!