Pular para o conteúdo principal

MÓDULO 8 - Spring Security

Bem-vindo ao Módulo 8! 🔐​

Sua aplicação está funcionando perfeitamente... mas qualquer pessoa pode acessá-la! Como proteger seus endpoints? Como autenticar seus usuários? Como gerenciar papéis e permissões?

Spring Security é A solução para proteger suas aplicações Spring Boot. Este módulo vai te ensinar a proteger sua aplicação como um profissional.


🎓 Objetivos de Aprendizagem​

Ao final deste módulo, você será capaz de:

  1. ✅ Compreender a arquitetura do Spring Security
  2. ✅ Configurar autenticação por formulário e HTTP Basic
  3. ✅ Implementar autenticação JWT (stateless)
  4. ✅ Integrar OAuth2 para login social (Google, GitHub)
  5. ✅ Gerenciar papéis e permissões
  6. ✅ Proteger contra CSRF, XSS e outros ataques

📚 Pré-requisitos​

Antes de começar este módulo, você deve ter:

  • ✅ Completado os Módulos 1 a 7
  • ✅ Domínio da arquitetura REST
  • ✅ Compreensão dos conceitos básicos de bancos de dados
  • ✅ Familiaridade com as anotações do Spring

Se esses pré-requisitos não foram cumpridos, volte aos módulos anteriores!


🗺️ Plano do Módulo​

Parte Teórica (5 capítulos)​

Capítulo 1: Introdução ao Spring Security​

Duração: 45 minutos

Conteúdo:

  • Por que proteger uma aplicação?
  • Arquitetura do Spring Security
  • Filtros de segurança (Filter Chain)
  • Authentication vs Authorization
  • SecurityContext e Principal

Por que é importante? Compreender as bases antes de configurar


Capítulo 2: Autenticação Básica​

Duração: 1 hora

Conteúdo:

  • Configuração de segurança moderna (Spring Security 6+)
  • HTTP Basic e Form Login
  • UserDetailsService
  • PasswordEncoder (BCrypt)
  • Personalização das páginas de login/logout

Por que é importante? A base de toda autenticação


Capítulo 3: JWT (JSON Web Tokens)​

Duração: 1h15

Conteúdo:

  • O que é JWT? Por que usar?
  • Estrutura de um token (Header, Payload, Signature)
  • Geração e validação de tokens
  • Refresh Tokens
  • Integração com Spring Security

Por que é importante? Padrão para APIs REST modernas


Capítulo 4: OAuth2 e Login Social​

Duração: 1 hora

Conteúdo:

  • Conceitos de OAuth2 (Authorization Code Flow)
  • Client vs Resource Server
  • Login com Google, GitHub, Facebook
  • Configuração do Spring Security OAuth2 Client
  • Personalização do fluxo

Por que é importante? UX moderna, menos senhas para gerenciar


Capítulo 5: Segurança Avançada​

Duração: 45 minutos

Conteúdo:

  • Proteção CSRF
  • Configuração CORS
  • Segurança a nível de método (@PreAuthorize, @Secured)
  • Papéis vs Permissões (RBAC)
  • Headers de segurança

Por que é importante? Segurança em profundidade


Parte Prática (4 TPs)​

TP8.1: Autenticação Form Login​

Duração: 1h30

Objetivo: Proteger uma aplicação com autenticação por formulário

Você vai:

  • Configurar o Spring Security
  • Criar uma página de login personalizada
  • Armazenar usuários no banco de dados
  • Gerenciar sessão e logout

TP8.2: API REST com JWT​

Duração: 2h

Objetivo: Criar uma API REST protegida por JWT

Você vai:

  • Implementar os endpoints login/register
  • Gerar e validar tokens JWT
  • Criar um filtro de autenticação
  • Proteger endpoints por papel

TP8.3: Gestão de Papéis e Permissões​

Duração: 1h30

Objetivo: Implementar um sistema RBAC completo

Você vai:

  • Criar papéis (ADMIN, USER, MANAGER)
  • Definir permissões granulares
  • Utilizar @PreAuthorize com expressões
  • Testar os acessos

TP8.4: Login Social com Google​

Duração: 1h30

Objetivo: Integrar login Google OAuth2

Você vai:

  • Configurar um projeto Google Cloud
  • Integrar OAuth2 Client
  • Recuperar informações do usuário
  • Combinar com autenticação local

📊 Duração Total​

TipoDuração
Teoria4h45 (5 capítulos)
Prática6h30 (4 TPs)
Total11h15 (~3-4 sessões)

🎯 O Que Você Vai Entender​

Antes deste Módulo​

// Sua API está aberta para todos! 😱
@RestController
@RequestMapping("/api/users")
public class UserController {

@GetMapping
public List<User> getAllUsers() {
return userService.findAll(); // Qualquer um pode ver!
}

@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id); // Qualquer um pode deletar!
}
}

Depois deste Módulo​

@RestController
@RequestMapping("/api/users")
public class UserController {

@GetMapping
@PreAuthorize("hasRole('USER')") // ← Usuários autenticados
public List<User> getAllUsers() {
return userService.findAll();
}

@DeleteMapping("/{id}")
@PreAuthorize("hasRole('ADMIN')") // ← Apenas Admins!
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}

Você saberá:

  • ✅ Quem pode acessar o quê
  • ✅ Como autenticar usuários
  • ✅ Como gerenciar tokens JWT
  • ✅ Como integrar OAuth2
  • ✅ Como proteger contra ataques

🚀 Por Que Este Módulo É Essencial​

1. Segurança Não É Opcional​

Sem segurança:
- Roubo de dados pessoais 💀
- Modificação não autorizada 💀
- Roubo de identidade 💀
- Multas LGPD (até 4% do faturamento) 💀

2. Competência Muito Procurada​

Vagas Java/Spring:
- "Experiência com Spring Security obrigatória" ✓
- "Conhecimento em JWT/OAuth2" ✓
- "Proteção de APIs REST" ✓

3. Perguntas Frequentes em Entrevistas​

Perguntas típicas:

  • "Explique a diferença entre Authentication e Authorization"
  • "Como funciona o JWT?"
  • "Como você protege contra ataques CSRF?"
  • "O que é o OAuth2 Authorization Code Flow?"

🗺️ Progressão na Formação​

Módulo 8 = Deixar sua aplicação pronta para produção!


📖 Como Abordar Este Módulo​

Teoria ANTES da Prática​

  1. Leia os 5 capítulos teóricos

    • Capítulo 1: Compreender a arquitetura
    • Capítulo 2: Autenticação básica
    • Capítulo 3: JWT (o mais usado em API)
    • Capítulo 4: OAuth2 (login social)
    • Capítulo 5: Segurança avançada
  2. Faça os TPs na ordem

    • TP8.1: Form Login (fundamentos)
    • TP8.2: JWT (API REST)
    • TP8.3: Papéis e permissões
    • TP8.4: OAuth2 Google

Tempo Recomendado​

Opção Intensiva (2 dias):

  • Dia 1 Manhã: Capítulos 1-2 + TP8.1
  • Dia 1 Tarde: Capítulo 3 + TP8.2
  • Dia 2 Manhã: Capítulos 4-5 + TP8.3
  • Dia 2 Tarde: TP8.4 + Revisão

Opção Progressiva (3-4 sessões):

  • Sessão 1: Capítulos 1-2 + TP8.1
  • Sessão 2: Capítulo 3 + TP8.2
  • Sessão 3: Capítulos 4-5 + TP8.3
  • Sessão 4: TP8.4 + Projeto pessoal

✅ Autoavaliação​

Antes de começar, responda:

  1. Você sabe o que significa "autenticação"? ☐ Sim ☐ Não
  2. Você conhece a diferença para "autorização"? ☐ Sim ☐ Não
  3. Já ouviu falar de JWT? ☐ Sim ☐ Não
  4. Sabe o que é OAuth2? ☐ Sim ☐ Não
  5. Conhece os ataques CSRF? ☐ Sim ☐ Não

Se você respondeu "Não" para alguma pergunta → Este módulo vai te ensinar tudo!


⚠️ Aviso Importante​

cuidado

Segurança é uma área crítica.

  • NUNCA copie configurações de segurança sem entender
  • SEMPRE teste suas configurações
  • Mantenha suas dependências atualizadas (vulnerabilidades)
  • NUNCA armazene senhas em texto puro

🎯 Próximo Passo​

Pronto para proteger sua aplicação?

➡️ Comece pelo Capítulo 1: Introdução ao Spring Security


⬅️ Voltar ao Plano de Curso