Implementación de JSON Web Token en Spring Security
Clase 21 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
¿Cómo se integra un filtro JWT en Spring Security?
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.
¿Cómo se configura SecurityConfig para usar JWT?
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 claseSecurityConfigutilizando@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.
¿Por qué es importante incluir el filtro antes de otros filtros?
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:
- Posicionamiento del filtro: El filtro JWT debe incluirse antes de
BasicAuthenticationFiltero inclusoUsernamePasswordAuthenticationFilter, ya que es considerado un perfil estándar para asegurar la autenticación inicial en Spring.
¿Qué significa tener una aplicación stateless?
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:
- Configuración de la política de sesiones: Dentro de
SecurityConfig, establecerSessionCreationPolicy.STATELESSindica que la aplicación no mantendrá estado de sesión y que cada petición deberá ser autenticada de forma independiente.
¿Cómo se realiza la verificación de los detalles del usuario con JWT?
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:
¿Cómo carga el contexto de seguridad?
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 elAuthenticationToken. -
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.
¿Cómo se evalúan las peticiones en consola?
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
subcambiando deadminacustomer), el servidor responde con un403, 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.