Autenticação e Autorização em Aplicações Web
Os alunos implementam mecanismos de autenticação e autorização para controlar o acesso de utilizadores a recursos da aplicação.
Sobre este tópico
A autenticação e autorização em aplicações web protegem recursos sensíveis ao verificar a identidade dos utilizadores e controlar os seus privilégios de acesso. A autenticação confirma quem é o utilizador, através de mecanismos como palavras-passe hashadas, tokens JWT ou autenticação multifator. A autorização define o que esse utilizador pode fazer, como ler, escrever ou eliminar dados, com base em papéis ou regras específicas. No 12.º ano, os alunos implementam estes sistemas em aplicações reais, respondendo a questões como a garantia de acesso autorizado e a análise de riscos em autenticações fracas.
Este tópico integra-se no Currículo Nacional, alinhado com os standards de Segurança e Privacidade e Criação de Conteúdos Digitais da DGE para o secundário. Os alunos desenvolvem competências em pensamento computacional avançado, avaliando vulnerabilidades como injeções SQL ou sessões mal geridas, e promovendo práticas seguras em desenvolvimento web.
A aprendizagem ativa beneficia particularmente este tópico, pois permite aos alunos codificar e testar mecanismos de autenticação em projetos colaborativos, simular ataques éticos e debater falhas reais. Estas abordagens tornam conceitos abstractos de segurança tangíveis, fomentam a resolução de problemas em equipa e preparam para cenários profissionais autênticos.
Questões-Chave
- Como podemos garantir que apenas utilizadores autorizados acedem a informações sensíveis?
- Analise a diferença entre autenticação e autorização e a sua importância na segurança.
- Avalie os riscos de segurança associados a implementações de autenticação fracas.
Objetivos de Aprendizagem
- Implementar mecanismos de autenticação robustos, como hashing de passwords e tokens JWT, para proteger o acesso a uma aplicação web.
- Comparar e contrastar os modelos de autorização baseados em papéis (RBAC) e baseados em atributos (ABAC) no contexto de aplicações web.
- Avaliar a segurança de um sistema de autenticação e autorização existente, identificando potenciais vulnerabilidades como ataques de força bruta ou escalada de privilégios.
- Desenvolver um protótipo de sistema de gestão de utilizadores que inclua registo, login seguro e atribuição de permissões específicas.
- Explicar a importância da gestão segura de sessões e os riscos associados a falhas nesse processo.
Antes de Começar
Porquê: Os alunos precisam de uma base sólida no desenvolvimento front-end e back-end para poderem implementar os mecanismos de autenticação e autorização.
Porquê: A compreensão de como armazenar e consultar dados é essencial para gerir informações de utilizadores e permissões.
Porquê: Conhecimentos sobre vulnerabilidades comuns como injeção de SQL ou XSS são importantes para entender a necessidade de autenticação e autorização robustas.
Vocabulário-Chave
| Autenticação | Processo de verificar a identidade de um utilizador, confirmando que ele é quem diz ser. Exemplos incluem login com nome de utilizador e palavra-passe, ou autenticação biométrica. |
| Autorização | Processo de determinar que ações um utilizador autenticado pode realizar dentro de uma aplicação. Define os níveis de acesso a recursos ou funcionalidades. |
| Hashing de Password | Processo de transformar uma palavra-passe numa sequência de caracteres de tamanho fixo (hash) para a armazenar de forma segura. Torna difícil a recuperação da palavra-passe original mesmo que a base de dados seja comprometida. |
| Token JWT (JSON Web Token) | Um padrão compacto e autónomo para representar de forma segura informações entre duas partes como um objeto JSON. Frequentemente usado para autenticação e autorização em APIs web. |
| RBAC (Role-Based Access Control) | Um modelo de controlo de acesso onde as permissões são atribuídas a funções (papéis), e os utilizadores recebem esses papéis. Simplifica a gestão de permissões em sistemas com muitos utilizadores. |
Atenção a estes erros comuns
Erro comumAutenticação e autorização são o mesmo processo.
O que ensinar em alternativa
A autenticação verifica a identidade, enquanto a autorização controla ações permitidas. Atividades de role-playing ajudam os alunos a distinguir, simulando cenários onde um utilizador autenticado é bloqueado por falta de autorização, promovendo discussões que clarificam as diferenças.
Erro comumArmazenar passwords em texto plano é aceitável para simplicidade.
O que ensinar em alternativa
Passwords devem ser sempre hashados com sal para resistir a fugas de dados. Simulações de breaches em atividades práticas mostram impactos reais, incentivando os alunos a implementarem hashing e a compararem antes/depois em testes colaborativos.
Erro comumSessões não expiram, garantindo acesso permanente.
O que ensinar em alternativa
Sessões devem ter timeouts para segurança. Projetos de codificação ativa permitem testar expirações, onde alunos observam falhas em acessos prolongados e ajustam timers, reforçando a importância através de iterações em grupo.
Ideias de aprendizagem ativa
Ver todas as atividadesCodificação em Pares: Login Simples com Sessões
Os pares criam uma aplicação web básica com Node.js ou Flask que usa autenticação por palavra-passe hashada e sessões para login. Testam acessos válidos e inválidos, registando logs de tentativas falhadas. Apresentam o código à turma para feedback.
Simulação de Ataques: Grupos de Vulnerabilidades
Divida a turma em grupos para simular ataques como brute-force ou man-in-the-middle em apps mockup. Cada grupo implementa defesas como CAPTCHA ou HTTPS, testa contra outros grupos e relata eficácia. Discuta resultados em plenário.
Projeto Colaborativo: App com RBAC
Em pequenos grupos, desenvolvam uma app web com Role-Based Access Control, atribuindo papéis como admin e user. Implementem rotas protegidas, testem acessos e avaliem riscos. Partilhem repositórios GitHub para revisão coletiva.
Análise Individual: Auditoria de Código
Cada aluno analisa código de autenticação fornecido, identifica fraquezas como passwords em claro e propõe correções com JWT. Submete relatório com testes unitários demonstrando melhorias.
Ligações ao Mundo Real
- Bancos como o Millennium BCP utilizam sistemas avançados de autenticação (como autenticação de dois fatores) e autorização para proteger o acesso às contas dos seus clientes e as transações financeiras.
- Plataformas de comércio eletrónico como a Amazon implementam mecanismos robustos para garantir que apenas o utilizador correto pode aceder ao seu histórico de compras, dados de pagamento e gerir as suas encomendas.
- Sistemas de gestão de conteúdos (CMS) como o WordPress permitem aos administradores definir diferentes níveis de acesso para autores, editores e outros utilizadores, garantindo que cada um só pode modificar o conteúdo para o qual tem permissão.
Ideias de Avaliação
Peça aos alunos para escreverem num pequeno papel: 1) Uma frase que explique a diferença fundamental entre autenticação e autorização. 2) Um exemplo de uma aplicação onde a autorização baseada em papéis é crucial e qual seria um papel comum nessa aplicação.
Durante a aula, apresente um cenário: 'Um utilizador tenta aceder a uma página de administração que requer permissões de 'editor'. O sistema verifica a sua identidade (login) e depois verifica se o seu papel é 'editor'. Qual destes passos é autenticação e qual é autorização?'. Recolha respostas rápidas para avaliar a compreensão imediata.
Em pares, os alunos analisam um pequeno trecho de código (fornecido pelo professor) que implementa um sistema de login básico. Devem identificar: 1) Onde ocorre a autenticação. 2) Que tipo de vulnerabilidade de segurança poderia existir se o código fosse mais complexo (ex: falta de hashing). Cada par apresenta as suas descobertas à turma.
Perguntas frequentes
Qual a diferença entre autenticação e autorização em apps web?
Como implementar autenticação segura em aplicações web?
Quais os riscos de autenticação fraca?
Como a aprendizagem ativa ajuda no ensino de autenticação e autorização?
Mais em Desenvolvimento de Aplicações e Web
Fundamentos de HTML: Estrutura e Semântica
Os alunos estruturam conteúdos de páginas web utilizando HTML, focando na semântica e acessibilidade.
2 methodologies
Estilização com CSS: Seletores e Propriedades
Os alunos estilizam visualmente páginas web usando CSS, aplicando seletores e propriedades para controlar o layout e a aparência.
2 methodologies
Layout Responsivo com CSS Flexbox e Grid
Os alunos criam designs responsivos que se adaptam a diferentes tamanhos de ecrã usando Flexbox e CSS Grid.
2 methodologies
Interatividade com JavaScript: DOM e Eventos
Os alunos introduzem-se à programação do lado do cliente para tornar as páginas web dinâmicas, manipulando o DOM e gerindo eventos.
2 methodologies
Validação de Formulários com JavaScript
Os alunos implementam validação de dados em formulários web usando JavaScript para melhorar a experiência do utilizador e a segurança.
2 methodologies
Introdução a APIs Web e AJAX
Os alunos exploram como as páginas web podem comunicar com servidores e outras aplicações usando APIs e requisições AJAX.
2 methodologies