Configuración de CORS en Spring Security para APIs y Frontend
Clase 8 de 23 • Curso de Java Spring Security: Autenticación y Seguridad Web
Contenido del curso
- 5

Configuración de Seguridad con Spring Security y Basic Authentication
06:32 - 6

Funcionamiento del Basic Authentication Filter en Spring Security
11:50 - 7

Deshabilitar protección CSRF en APIs REST con Spring Security
07:28 - 8

Configuración de CORS en Spring Security para APIs y Frontend
12:11 - 9

Configuración de Reglas de Acceso en Spring Security
07:45 - 10

Creación de usuarios personalizados en Spring Security
07:07 - 11

Creación y Gestión de Roles y Permisos en Aplicaciones Web
05:48
- 12

Creación y Gestión de Usuarios en Base de Datos con Spring Security
04:50 - 13

Implementación de User Detail Service en Spring Security con MySQL
09:21 - 14

Asignación de Roles y Permisos en Spring Security
08:57 - 15

Permisos Específicos con Authorities en Spring Security
13:07 - 16

Seguridad de Métodos en Spring Security: Control de Accesos por Roles
06:19
- 17

Creación y Uso de JSON Web Tokens en Java con Auth0
09:05 - 18

Implementación de Autenticación con JSON Web Tokens en Spring Boot
15:45 - 19

Validación de JSON Web Tokens con Auth0 en Java
06:29 - 20

Creación de Filtro de Seguridad JWT en Spring Security
18:16 - 21

Implementación de JSON Web Token en Spring Security
11:58
¿Qué es CORS y cómo afecta a tu aplicación?
Cuando trabajamos en proyectos web divididos en frontend y backend, a menudo tratamos con el intercambio de recursos entre diferentes orígenes. Esto es especialmente común cuando la aplicación frontend se ejecuta desde un dominio y el backend desde otro. Aquí es donde entra CORS (Cross-Origin Resource Sharing), un sistema crucial para permitir o restringir tales interacciones por razones de seguridad.
Por defecto, los frameworks como Spring bloquean estas peticiones cruzadas. Esto puede ser un obstáculo si, por ejemplo, nuestro frontend se ejecuta en localhost:4200 usando Angular, y nuestro API backend corre en localhost:8080. Afortunadamente, Spring Security ofrece mecanismos para configurar y habilitar CORS, permitiendo así que aplicaciones de frontend puedan comunicarse con APIs alojadas en diferentes dominios.
¿Cómo se implementa CORS en Spring Security?
Para gestionar CORS en una aplicación Spring, es necesario modificar algunas configuraciones del backend. Esto asegura que tu aplicación pueda reconocer y permitir peticiones legítimas desde otros orígenes.
-
Deshabilitar CSRF y habilitar CORS:
- Desde el backend, después de deshabilitar CSRF (Cross-Site Request Forgery), habilitamos CORS usando
cors().and(). Esto asegura que las configuraciones de CORS y las peticiones autorizadas se consideren.
- Desde el backend, después de deshabilitar CSRF (Cross-Site Request Forgery), habilitamos CORS usando
-
Anotación a métodos específicos:
-
Utiliza la anotación
@CrossOriginen los métodos de tus controladores para permitir accesos desde orígenes específicos. Por ejemplo:@CrossOrigin(origins = "http://localhost:4200") public ResponseEntity<Pizza> getPizzas() { // Tu lógica aquí }
-
-
Implementación de una configuración global:
-
Para evitar anotar cada método individualmente, puedes definir una configuración global. Esto se realiza creando una nueva clase configuradora:
@Configuration public class CorsConfig { @Bean public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200")); configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE")); configuration.setAllowedHeaders(Arrays.asList("*")); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); return source; } }
-
¿Qué beneficios trae la configuración global de CORS?
Optar por una configuración global de CORS en un proyecto tiene varias ventajas:
-
Simplicidad y Mantenimiento: Centralizar las configuraciones hace que el mantenimiento del código sea más sencillo. Cualquier cambio en las políticas de origen solo requiere una modificación en el archivo de configuración.
-
Consistencia: Proporciona una manera uniforme de gestionar el acceso a todos los controladores y métodos, asegurando una protección constante y sin omisiones.
-
Escalabilidad: Facilita la ampliación de las políticas de acceso conforme el proyecto crece, simplificando la adición de nuevos métodos y controladores que necesitan el mismo manejo de políticas de acceso.
¿Cómo asegurar un despliegue exitoso?
Después de implementar la configuración de CORS, es vital verificar el funcionamiento de la aplicación:
-
Inicializa la aplicación: Lanza la aplicación backend y revisa que la configuración de CORS se carga correctamente. Esto se puede verificar revisando las trazas del servidor.
-
Validación de Seguridad: Siempre asegúrate de que las políticas de seguridad no han sido alteradas inadvertidamente. Uso de herramientas como Postman para comprobar la autenticación de peticiones asegura que todo funciona como esperabas.
-
Prueba desde el frontend: Finalmente, accede al frontend y realiza pruebas desde diferentes entornos (navegadores, dispositivos) para confirmar que las peticiones cross-origin funcionan y se manejan correctamente.
Con esta configuración, Spring Security te permite gestionar las políticas de acceso entre orígenes de manera eficiente. ¡Sigue aprendiendo y explorando las funcionalidades que estos marcos pueden ofrecer a tus proyectos!