Este método está deprecado
sessionManagement()
En su lugar se puede utilizar de la siguiente manera
.sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
Introducción
Protección de aplicaciones con Spring Security
Configuración de Spring Security: Autorización y Autenticación
Configuración de Spring Security en Proyectos Java con Gradle
Autenticación Básica con Spring Security por Defecto
Configuración de seguridad
Configuración de Seguridad con Spring Security y Basic Authentication
Funcionamiento del Basic Authentication Filter en Spring Security
Deshabilitar protección CSRF en APIs REST con Spring Security
Configuración de CORS en Spring Security para APIs y Frontend
Configuración de Reglas de Acceso en Spring Security
Creación de usuarios personalizados en Spring Security
Creación y Gestión de Roles y Permisos en Aplicaciones Web
Autenticación con BD
Creación y Gestión de Usuarios en Base de Datos con Spring Security
Implementación de User Detail Service en Spring Security con MySQL
Asignación de Roles y Permisos en Spring Security
Permisos Específicos con Authorities en Spring Security
Seguridad de Métodos en Spring Security: Control de Accesos por Roles
Seguridad con JWT
Creación y Uso de JSON Web Tokens en Java con Auth0
Implementación de Autenticación con JSON Web Tokens en Spring Boot
Validación de JSON Web Tokens con Auth0 en Java
Creación de Filtro de Seguridad JWT en Spring Security
Implementación de JSON Web Token en Spring Security
Próximos pasos
Auditoría de Usuarios con Spring Security y Data JPA
Configuración y Personalización de Spring Security
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La integración de un filtro JWT dentro de Spring Security es una tarea fundamental para asegurar que nuestras aplicaciones manejen la autenticación de manera segura y libre de sesiones de estado. El fin es que las peticiones sean validadas usando un JSON Web Token, lo cual se logra extendiendo la configuración de seguridad estándar.
En primer lugar, es esencial ajustar la clase SecurityConfig
para dejar de utilizar la autenticación básica HTTP y comenzar a usar la basada en JWT. Esto implica varias etapas:
Inyección del filtro JWT: Se debe inyectar el filtro, DebateFinalJWTFilter
, dentro del constructor de la clase SecurityConfig
utilizando @Autowired
.
Reemplazo de HTTP Basic: En el método de configuración de seguridad, se reemplaza la última línea de autenticación básica por la adición del nuevo filtro JWT con addFilter
.
Cuando se decide agregar un filtro personal dentro de una aplicación Spring Security, es crucial determinar su lugar en la cadena de filtros. Para el caso de un filtro JWT:
BasicAuthenticationFilter
o incluso UsernamePasswordAuthenticationFilter
, ya que es considerado un perfil estándar para asegurar la autenticación inicial en Spring.Una aplicación stateless no almacena ninguna información sobre las sesiones del usuario entre las peticiones. Este enfoque, ideal para JWT, se consigue de la siguiente manera:
SecurityConfig
, establecer SessionCreationPolicy.STATELESS
indica que la aplicación no mantendrá estado de sesión y que cada petición deberá ser autenticada de forma independiente.La correcta implementación de JWT no solo garantiza el paso seguro de peticiones, sino que también permite verificación detallada de las mismas:
La carga adecuada del contexto de seguridad es primordial:
Incluir detalles de autenticación: Antes de añadir la autenticación al contexto de seguridad, se añaden detalles relevantes usando setDetails()
en el AuthenticationToken
.
Uso de WebAuthenticationDetailsSource: Se emplea para construir detalles extra, como la dirección IP remota y evitar el uso de una sesión debido al enfoque stateless.
Una vez configurada la seguridad:
Validación de peticiones JWT: Usando Postman, primero se inicia sesión para obtener un JWT. Al realizar una petición con el token, se verifica su validez, garantizando un flujo seguro excluyendo el uso de credenciales básicas.
Manejo de peticiones con token manipulado: En caso de alterar el contenido del token (como el sub
cambiando de admin
a customer
), el servidor responde con un 403
, demostrando que el token fue manipulado y su firma no es válida.
Mediante una gestión adecuada de la configuración de Spring Security con JWT, se asegura que la aplicación no solo sea segura, sino también eficiente y libre de extensos manejos de sesión. Este proceso fortalece la capacidad de autenticación y autorización, indispensable para aplicaciones modernas y seguras.
Aportes 9
Preguntas 1
Este método está deprecado
sessionManagement()
En su lugar se puede utilizar de la siguiente manera
.sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
Que laaaargo es implementar jwt
✅
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?