Pular para conteúdo

Aula 10 - Controle de Acesso (RBAC) 🛡️

Hierarquia e Segurança em Camadas


Agenda 📅

  1. O que é RBAC? (Roles)
  2. Autenticação vs Autorização
  3. O Fluxo do Middleware
  4. Erros 401 vs 403
  5. Protegendo rotas na prática
  6. Hierarquia de Perfis

1. Role-Based Access Control 👑

  • Permissões ligadas a Perfis (Roles).
  • Ex: ADMIN, EDITOR, VIEWER.
  • Facilita a gestão de milhares de usuários.

2. A Cancela (Middleware) 🚧

  • O middleware checa se o usuário tem a "chave" certa.
  • Se não tiver -> 403 Forbidden.
  • Se tiver -> next().

3. O Fluxo de Segurança 🌊

graph LR
    Req[Request] --> Auth[Autenticação]
    Auth --> |OK| Role[Autorização]
    Role --> |OK| Controller[Recurso Final]

4. 401 vs 403: Não confunda! ❌

  • 401 (Unauthorized): "Quem é você?". Token inválido ou ausente.
  • 403 (Forbidden): "Eu sei quem você é, mas não deixo entrar". Falta de permissão.

5. Implementação Dinâmica 🔒

// Middleware genérico
router.delete('/usuario/:id', 
    autenticar, 
    autorizar(['ADMIN']), 
    userController.remover
);

6. Hierarquia de Acesso 🏛️

  • Um Admin deve poder acessar rotas de User?
  • Design de sistema: Roles "Pai" e "Filho".

7. Melhores Práticas 🏆

  • Centralize a lógica em Middlewares.
  • Nunca exponha permissões sensíveis no frontend (segurança do lado do servidor).

Desafio: Segurança ⚡

Em um sistema escolar, o Diretor e o Professor podem ver notas. O Aluno só vê as dele. Como você configuraria a Role da rota GET /notas?


Resumo ✅

  • RBAC organiza permissões por grupos.
  • Middlewares são os guardiões das rotas.
  • Diferenciar 401 de 403 é vital para Debug.

Próxima Aula: Segurança Avançada 🏗️

Session vs Token e Refresh Tokens

  • O que fazer quando o token expira?
  • Protegendo contra ataques comuns (XSS, CSRF).

Dúvidas? 🛡️