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:
- ✅ Compreender a arquitetura do Spring Security
- ✅ Configurar autenticação por formulário e HTTP Basic
- ✅ Implementar autenticação JWT (stateless)
- ✅ Integrar OAuth2 para login social (Google, GitHub)
- ✅ Gerenciar papéis e permissões
- ✅ 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
| Tipo | Duração |
|---|---|
| Teoria | 4h45 (5 capítulos) |
| Prática | 6h30 (4 TPs) |
| Total | 11h15 (~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
-
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
-
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:
- Você sabe o que significa "autenticação"? ☐ Sim ☐ Não
- Você conhece a diferença para "autorização"? ☐ Sim ☐ Não
- Já ouviu falar de JWT? ☐ Sim ☐ Não
- Sabe o que é OAuth2? ☐ Sim ☐ Não
- Conhece os ataques CSRF? ☐ Sim ☐ Não
Se você respondeu "Não" para alguma pergunta → Este módulo vai te ensinar tudo!
⚠️ Aviso Importante
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