Qué hace Spring Security al agregar su dependencia

Resumen

Aprende a integrar Spring Security en una aplicación Java construida con Spring Data JPA y descubre por qué, con solo añadir la dependencia, todas tus peticiones quedan protegidas. Esta guía es para desarrolladores backend que ya manejan APIs REST y quieren sumar autenticación a su proyecto.

¿Qué proyecto base necesitas para trabajar con Spring Security?

El punto de partida es la aplicación Platzi Pizzería, construida previamente en el curso de Spring Data JPA. Si no la tienes, puedes clonar el repositorio desde GitHub y renombrarlo para evitar confusiones con el nombre por defecto.

Dentro del proyecto encuentras tres capas claras que organizan la lógica:

  • Capa de persistencia, donde viven las entidades y los repositorios.
  • Capa de servicio, que orquesta la lógica de negocio.
  • Capa web, con los controladores que exponen los endpoints REST.

En la capa web tienes tres controladores principales. El Pizza Controller gestiona consultas de pizzas disponibles, búsquedas por nombre, filtros con o sin ingredientes, las pizzas más baratas y operaciones de creación, actualización y borrado. El Order Controller maneja órdenes del día, pedidos a domicilio o para comer afuera, detalle por cliente y la generación de una orden aleatoria. El Customer Controller permite consultar un cliente por su teléfono.

¿Para qué sirve Spring Security? Es el módulo de Spring que protege tu aplicación añadiendo autenticación y autorización a cada petición HTTP que llega a tus endpoints.

¿Cómo preparar IntelliJ IDEA y el JDK 17 para el proyecto?

Una vez clonado el repositorio, ábrelo en IntelliJ IDEA seleccionando el archivo build.gradle y eligiendo Open as Project. El IDE descargará todas las dependencias automáticamente.

Si aparecen errores de compilación, casi siempre es por la versión de Java. Este proyecto requiere Java 17 como JDK. Para ajustarlo sigue esta ruta [02:00]:

  1. Ve a File > Settings > Build, Execution and Deployment > Build Tools > Gradle y cambia la versión de 11 a 17.
  2. Haz clic derecho sobre el proyecto y entra a Open Module Settings para fijar también el SDK 17.
  3. Recarga el proyecto con Reload Gradle Projects para aplicar los cambios.

En el ejemplo se usa Temurin 17, una implementación de OpenJDK que funciona sin problemas con Spring Boot.

¿Qué revisar en el archivo application.properties?

Antes de ejecutar la aplicación, abre el archivo application.properties y verifica el nombre de la base de datos, el usuario y la contraseña. Estos valores deben coincidir con tu instalación local de MySQL, que es el motor utilizado en el curso.

En los recursos también tienes archivos SQL para crear la base de datos y poblarla con datos de prueba, así te ahorras la carga manual.

¿Cómo se agrega la dependencia de Spring Security al proyecto?

La forma más rápida es ir a start.spring.io, añadir la dependencia Spring Security y usar la opción Explore para ver cómo queda declarada en build.gradle [04:30]. Copia la línea de implementación y pégala justo debajo de la dependencia de Starter Web en tu archivo build.gradle.

Luego refresca Gradle para que descargue la librería y vuelve a ejecutar la aplicación.

¿Qué pasa al añadir Spring Security sin configurarlo? Todas las peticiones quedan bloqueadas con un error 401 Unauthorized porque el filtro de seguridad se activa automáticamente y exige autenticación.

¿Qué es el Spring Security Filter Chain?

Es la cadena de filtros que intercepta cada petición HTTP antes de que llegue a tu controlador. Evalúa si la petición está autenticada, si tiene los permisos necesarios y aplica las reglas de seguridad configuradas. Sin configuración propia, usa los valores por defecto y deniega cualquier acceso anónimo.

Cuando pruebas el endpoint Get Pizzas desde Postman después de instalar la dependencia, ya no recibes el listado de pizzas. En su lugar aparece una respuesta vacía con código 401, prueba de que el filtro está activo.

¿Qué hace Spring Security por defecto al iniciarse?

Spring Security aplica dos comportamientos automáticos en cuanto detecta la dependencia en el classpath:

  • Activa el Spring Security Filter Chain, que intercepta todas las rutas de tu aplicación.
  • Genera un usuario por defecto llamado user y una contraseña aleatoria que aparece impresa en la consola al arrancar la aplicación.

Esa contraseña cambia cada vez que reinicias el proyecto, así que conviene revisar los logs de inicio para usarla en las pruebas. Con esas credenciales puedes autenticarte y volver a acceder a los endpoints expuestos.

En la siguiente clase vas a usar precisamente ese usuario y contraseña por defecto para autenticarte desde Postman y entender el flujo básico de autenticación. ¿Ya tienes tu proyecto corriendo con el error 401? Cuéntame en los comentarios qué endpoint estás probando primero.