Saltar al contenido principal

MÓDULO 8 - Spring Security

¡Bienvenido al Módulo 8! 🔐​

Su aplicación funciona perfectamente... ¡pero cualquiera puede acceder a ella! ¿Cómo proteger sus endpoints? ¿Cómo autenticar a sus usuarios? ¿Cómo gestionar los roles y permisos?

Spring Security es LA solución para asegurar sus aplicaciones Spring Boot. Este módulo le enseña a proteger su aplicación como un profesional.


🎓 Objetivos de Aprendizaje​

Al final de este módulo, usted será capaz de:

  1. ✅ Comprender la arquitectura de Spring Security
  2. ✅ Configurar la autenticación por formulario y HTTP Basic
  3. ✅ Implementar la autenticación JWT (stateless)
  4. ✅ Integrar OAuth2 para login social (Google, GitHub)
  5. ✅ Gestionar roles y permisos
  6. ✅ Proteger contra CSRF, XSS y otros ataques

📚 Prerrequisitos​

Antes de comenzar este módulo, usted debe haber:

  • ✅ Completado los Módulos 1 a 7
  • ✅ Dominado la arquitectura REST
  • ✅ Comprendido los conceptos básicos de bases de datos
  • ✅ Sentirse cómodo con las anotaciones de Spring

¡Si no cumple estos prerrequisitos, regrese a los módulos anteriores!


🗺️ Plan del Módulo​

Parte Teórica (5 capítulos)​

Capítulo 1: Introducción a Spring Security​

Duración: 45 minutos

Contenido:

  • ¿Por qué asegurar una aplicación?
  • Arquitectura de Spring Security
  • Filtros de seguridad (Filter Chain)
  • Autenticación vs Autorización
  • SecurityContext y Principal

¿Por qué es importante? Comprender las bases antes de configurar


Capítulo 2: Autenticación Básica​

Duración: 1 hora

Contenido:

  • Configuración de seguridad moderna (Spring Security 6+)
  • HTTP Basic y Form Login
  • UserDetailsService
  • PasswordEncoder (BCrypt)
  • Personalización de las páginas de login/logout

¿Por qué es importante? La base de toda autenticación


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

Duración: 1h15

Contenido:

  • ¿Qué es JWT? ¿Por qué usarlo?
  • Estructura de un token (Header, Payload, Signature)
  • Generación y validación de tokens
  • Refresh Tokens
  • Integración con Spring Security

¿Por qué es importante? Estándar para APIs REST modernas


Capítulo 4: OAuth2 y Login Social​

Duración: 1 hora

Contenido:

  • Conceptos de OAuth2 (Authorization Code Flow)
  • Client vs Resource Server
  • Login con Google, GitHub, Facebook
  • Configuración de Spring Security OAuth2 Client
  • Personalización del flujo

¿Por qué es importante? UX moderna, menos contraseñas que gestionar


Capítulo 5: Seguridad Avanzada​

Duración: 45 minutos

Contenido:

  • Protección CSRF
  • Configuración CORS
  • Seguridad a nivel de método (@PreAuthorize, @Secured)
  • Roles vs Permisos (RBAC)
  • Headers de seguridad

¿Por qué es importante? Seguridad en profundidad


Parte Práctica (4 TPs)​

TP8.1: Autenticación Form Login​

Duración: 1h30

Objetivo: Asegurar una aplicación con autenticación por formulario

Usted va a:

  • Configurar Spring Security
  • Crear una página de login personalizada
  • Almacenar los usuarios en base de datos
  • Gestionar la sesión y el logout

TP8.2: API REST con JWT​

Duración: 2h

Objetivo: Crear una API REST asegurada por JWT

Usted va a:

  • Implementar los endpoints login/register
  • Generar y validar tokens JWT
  • Crear un filtro de autenticación
  • Proteger los endpoints por rol

TP8.3: Gestión de Roles y Permisos​

Duración: 1h30

Objetivo: Implementar un sistema RBAC completo

Usted va a:

  • Crear roles (ADMIN, USER, MANAGER)
  • Definir permisos granulares
  • Utilizar @PreAuthorize con expresiones
  • Probar los accesos

TP8.4: Login Social con Google​

Duración: 1h30

Objetivo: Integrar el login Google OAuth2

Usted va a:

  • Configurar un proyecto Google Cloud
  • Integrar OAuth2 Client
  • Recuperar la información del usuario
  • Combinar con autenticación local

📊 Duración Total​

TipoDuración
Teoría4h45 (5 capítulos)
Práctica6h30 (4 TPs)
Total11h15 (~3-4 sesiones)

🎯 Lo Que Va a Comprender​

Antes de este Módulo​

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

@GetMapping
public List<User> getAllUsers() {
return userService.findAll(); // ¡Cualquiera puede ver!
}

@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id); // ¡Cualquiera puede eliminar!
}
}

Después de este Módulo​

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

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

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

Usted sabrá:

  • ✅ Quién puede acceder a qué
  • ✅ Cómo autenticar a los usuarios
  • ✅ Cómo gestionar los tokens JWT
  • ✅ Cómo integrar OAuth2
  • ✅ Cómo proteger contra ataques

🚀 Por Qué Este Módulo Es Esencial​

1. La Seguridad No Es Opcional​

Sin seguridad:
- Robo de datos personales 💀
- Modificación no autorizada 💀
- Suplantación de identidad 💀
- Multas RGPD (hasta 4% de la facturación) 💀

2. Competencia Muy Demandada​

Ofertas de empleo Java/Spring:
- "Experiencia en Spring Security requerida" ✓
- "Conocimiento de JWT/OAuth2" ✓
- "Aseguramiento de APIs REST" ✓

3. Preguntas Frecuentes en Entrevistas​

Preguntas típicas:

  • "Explique la diferencia entre Authentication y Authorization"
  • "¿Cómo funciona JWT?"
  • "¿Cómo protege contra ataques CSRF?"
  • "¿Qué es OAuth2 Authorization Code Flow?"

🗺️ Progresión en la Formación​

Módulo 8 = ¡Dejar su aplicación lista para producción!


📖 Cómo Abordar Este Módulo​

Teoría ANTES de la Práctica​

  1. Lea los 5 capítulos teóricos

    • Capítulo 1: Comprender la arquitectura
    • Capítulo 2: Autenticación básica
    • Capítulo 3: JWT (el más usado en API)
    • Capítulo 4: OAuth2 (login social)
    • Capítulo 5: Seguridad avanzada
  2. Realice los TPs en orden

    • TP8.1: Form Login (fundamentos)
    • TP8.2: JWT (API REST)
    • TP8.3: Roles y permisos
    • TP8.4: OAuth2 Google

Tiempo Recomendado​

Opción Intensiva (2 días):

  • Día 1 Mañana: Capítulos 1-2 + TP8.1
  • Día 1 Tarde: Capítulo 3 + TP8.2
  • Día 2 Mañana: Capítulos 4-5 + TP8.3
  • Día 2 Tarde: TP8.4 + Revisión

Opción Progresiva (3-4 sesiones):

  • Sesión 1: Capítulos 1-2 + TP8.1
  • Sesión 2: Capítulo 3 + TP8.2
  • Sesión 3: Capítulos 4-5 + TP8.3
  • Sesión 4: TP8.4 + Proyecto personal

✅ Autoevaluación​

Antes de comenzar, responda:

  1. ¿Sabe qué significa "autenticación"? ☐ Sí ☐ No
  2. ¿Conoce la diferencia con "autorización"? ☐ Sí ☐ No
  3. ¿Ha escuchado hablar de JWT? ☐ Sí ☐ No
  4. ¿Sabe qué es OAuth2? ☐ Sí ☐ No
  5. ¿Conoce los ataques CSRF? ☐ Sí ☐ No

Si ha respondido "No" a alguna pregunta → ¡Este módulo le enseñará todo!


⚠️ Advertencia Importante​

precaución

La seguridad es un área crítica.

  • NUNCA copie configuraciones de seguridad sin comprenderlas
  • SIEMPRE pruebe sus configuraciones
  • Mantenga sus dependencias actualizadas (vulnerabilidades de seguridad)
  • NUNCA almacene contraseñas en texto plano

🎯 Próximo Paso​

¿Listo para asegurar su aplicación?

➡️ Comenzar con el Capítulo 1: Introducción a Spring Security


⬅️ Volver al Plan de Curso