Skip to content

Autenticação e Autorização em Aplicações WebAtividades e Estratégias de Ensino

Este tópico envolve conceitos abstratos que se tornam claros quando os alunos interagem com sistemas reais. Ao implementarem autenticação e autorização em aplicações práticas, os estudantes compreendem a importância de cada camada de segurança, uma vez que os erros têm consequências imediatas e visíveis no funcionamento das aplicações.

12° AnoInovação Digital e Pensamento Computacional Avançado4 atividades30 min60 min

Objetivos de Aprendizagem

  1. 1Implementar mecanismos de autenticação robustos, como hashing de passwords e tokens JWT, para proteger o acesso a uma aplicação web.
  2. 2Comparar e contrastar os modelos de autorização baseados em papéis (RBAC) e baseados em atributos (ABAC) no contexto de aplicações web.
  3. 3Avaliar 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.
  4. 4Desenvolver um protótipo de sistema de gestão de utilizadores que inclua registo, login seguro e atribuição de permissões específicas.
  5. 5Explicar a importância da gestão segura de sessões e os riscos associados a falhas nesse processo.

Pretende um plano de aula completo com estes objetivos? Gerar uma Missão

Codificaçã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.

Preparação e detalhes

Como podemos garantir que apenas utilizadores autorizados acedem a informações sensíveis?

Sugestão de Facilitação: Durante a Codificação em Pares, peça aos alunos para alternarem entre os papéis de 'desenvolvedor' e 'hacker' em intervalos de 10 minutos, incentivando-os a pensar criticamente sobre como quebrariam o sistema que estão a construir.

Setup: Grupos organizados em mesas com acesso a materiais de investigação

Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais
50 min·Pequenos grupos

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.

Preparação e detalhes

Analise a diferença entre autenticação e autorização e a sua importância na segurança.

Sugestão de Facilitação: Na Simulação de Ataques, atribua vulnerabilidades específicas a cada grupo e peça-lhes para apresentarem a sua estratégia de exploração num formato de 'conferência de segurança', promovendo a discussão entre pares.

Setup: Grupos organizados em mesas com acesso a materiais de investigação

Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais
60 min·Pequenos grupos

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.

Preparação e detalhes

Avalie os riscos de segurança associados a implementações de autenticação fracas.

Sugestão de Facilitação: No Projeto Colaborativo, defina marcos claros para a implementação de RBAC, como 'criação do modelo de papéis' e 'teste de permissões', para manter o projeto alinhado com os objetivos da atividade.

Setup: Grupos organizados em mesas com acesso a materiais de investigação

Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais
30 min·Individual

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.

Preparação e detalhes

Como podemos garantir que apenas utilizadores autorizados acedem a informações sensíveis?

Sugestão de Facilitação: Na Análise Individual, forneça código com erros intencionais e peça aos alunos para corrigirem as vulnerabilidades antes de avançarem para a discussão em grupo, garantindo que todos compreendem os conceitos.

Setup: Grupos organizados em mesas com acesso a materiais de investigação

Materials: Documento com o cenário do problema, Quadro KWL ou estrutura de inquiry, Biblioteca de recursos, Modelo para apresentação da solução

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais

Ensinar Este Tópico

Comece por demonstrar um sistema simples de login com vulnerabilidades evidentes, como passwords em texto plano, para que os alunos identifiquem os problemas logo no início. Evite explicar demasiados conceitos teóricos de uma vez; em vez disso, introduza cada tópico à medida que os alunos o necessitam durante as atividades práticas. Pesquisas mostram que a aprendizagem baseada em projetos, especialmente em segurança informática, melhora a retenção quando os alunos conseguem visualizar as consequências dos seus erros.

O Que Esperar

No final, os alunos demonstram segurança ao implementar sistemas de autenticação robustos e autorização baseada em papéis. Devem ser capazes de explicar o processo completo, identificar vulnerabilidades comuns e justificar as suas escolhas técnicas com base em critérios de segurança.

Estas atividades são um ponto de partida. A missão completa é a experiência.

  • Guião completo de facilitação com falas do professor
  • Materiais imprimíveis para o aluno, prontos para a aula
  • Estratégias de diferenciação para cada tipo de aluno
Gerar uma Missão

Atenção a estes erros comuns

Erro comumDurante a Codificação em Pares, watch for students who confuse autenticação com autorização ao implementarem o sistema de login.

O que ensinar em alternativa

Peça aos pares para documentarem cada passo do processo num quadro branco: primeiro, identifiquem onde a identidade do utilizador é verificada (autenticação) e depois onde as permissões são verificadas (autorização), usando exemplos concretos do código que estão a escrever.

Erro comumDurante a Simulação de Ataques, watch for students who assume que armazenar passwords em texto plano é suficiente para aplicações de pequena escala.

O que ensinar em alternativa

Peça aos grupos para simularem uma fuga de dados com passwords em texto plano e compararem o impacto com um sistema onde as passwords estão hashadas, usando ferramentas como Hashcat para demonstrar a diferença na prática.

Erro comumDurante o Projeto Colaborativo, watch for students who implementam sessões sem expiração, acreditando que o acesso permanente é seguro.

O que ensinar em alternativa

Defina um timer visível durante o desenvolvimento e peça aos alunos para testarem o que acontece quando a sessão expira, ajustando o tempo de inatividade com base nos resultados observados.

Ideias de Avaliação

Bilhete de Saída

Após a Codificação em Pares, 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.

Verificação Rápida

Durante a Simulação de Ataques, 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.

Avaliação entre Pares

Após a Análise Individual, 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.

Extensões e Apoio

  • Peça aos alunos que implementem autenticação multifator num pequeno módulo da aplicação, usando bibliotecas como Twilio ou Google Authenticator para explorar soluções do mundo real.
  • Para alunos que têm dificuldade, forneça um template de código com as funções principais já implementadas e peça-lhes para completarem apenas a lógica de autorização, focando-se nos papéis.
  • Para turmas avançadas, proponha um desafio de 'ataque e defesa', onde um grupo tenta explorar uma vulnerabilidade enquanto o outro defende o sistema, simulando um cenário de 'capture the flag'.

Vocabulário-Chave

AutenticaçãoProcesso 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çãoProcesso 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 PasswordProcesso 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.

Preparado para lecionar Autenticação e Autorização em Aplicações Web?

Gere uma missão completa com tudo o que precisa

Gerar uma Missão