Creación y Uso de JSON Web Tokens en Java con Auth0
Clase 17 de 23 • Curso de Java Spring Security: Autenticación y Seguridad Web
Contenido del curso
Configuración de seguridad
- 5

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

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

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

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

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

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

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

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

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

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

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

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

Creación y Uso de JSON Web Tokens en Java con Auth0
Viendo ahora - 18

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

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

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

Implementación de JSON Web Token en Spring Security
11:58 min
Próximos pasos
¿Qué es un JSON Web Token y cómo funciona?
Los JSON Web Tokens (JWT) son un estándar de código abierto diseñado para el intercambio seguro de información entre partes. Este tipo de tokens utiliza el formato JSON y es especialmente útil para autenticación y autorización. La estructura de un JWT consta de tres partes: Header, Payload y Signature, que aseguran la validez y seguridad del token.
- Header: Incluye el algoritmo de encriptación (como HMAC, RSA) y el tipo de token, que generalmente es JWT.
- Payload: Contiene la información que se desea transmitir (claims). Algunos parameters estándar son:
iss(issuer): Quién emitió el token.iat(issued at): Cuándo fue emitido.exp(expiration): Cuándo expira.- Claims personalizados: Puede agregar datos específicos según sus necesidades.
- Signature: Se usa para verificar que el mensaje no haya sido alterado. Combina el Header, Payload y una clave secreta utilizando el algoritmo especificado.
¿Cómo se implementa un JWT en Java con Auth0?
Para implementar JWT en Java, se utiliza una librería de Auth0, que facilita la generación y manipulación de estos tokens. Aquí se detalla cómo incluir la dependencia necesaria en tu proyecto Java mediante Gradle y cómo implementar un método para crear un JWT.
-
Agregar la dependencia a tu proyecto:
- Visita
jwt.io, filtra por librerías para Java y selecciona la de Auth0. - Copia la dependencia de Maven Central:
dependencies { implementation 'com.auth0:java-jwt:4.3.0' }- Actualiza tu configuración de Gradle para instalar la dependencia.
- Visita
-
Crear un archivo de utilidades para manejar JWT:
Crea una clase para generar y manejar tokens:
import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import org.springframework.stereotype.Component; import java.util.Date; import java.util.concurrent.TimeUnit; @Component public class JsonWebTokenUtils { private static final Algorithm ALGORITHM; private static final String SECRET_KEY = "platzi_pizza"; static { ALGORITHM = Algorithm.HMAC256(SECRET_KEY); } public String create(String username) { return JWT.create() .withSubject(username) .withIssuer("PlatziPizza") .withIssuedAt(new Date()) .withExpiresAt(new Date(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(15))) .sign(ALGORITHM); } }
¿Cómo crear y gestionar JSON Web Tokens?
El siguiente paso es entender cómo generar un JWT a partir de un usuario y las especificaciones necesarias:
- Creación del token:
- Determine el sujeto: Generalmente es el nombre de usuario.
- Determine el emisor: El nombre de su aplicación, por ejemplo, "PlatziPizza".
- Datos temporales: Fecha de creación y fecha de expiración. En este caso, 15 días a partir de la emisión.
- Algoritmo de firma: Utiliza HMAC con un
secretKey.
La autenticación con JWT es robusta y adecuada para aplicaciones sin estado (stateless), donde el token es enviado en cada solicitud, específico usuando el encabezado HTTP Authorization. En este contexto, cambias el prefijo de "Basic" a "Bearer" junto con el token.
Este método asegura que solo los usuarios autenticados tengan acceso autorizado. Al firmar el token, se garantiza que cualquier alteración anule su validez, manteniendo la seguridad de la aplicación. Recuerda, una buena práctica es siempre probar y validar la implementación de seguridad antes de integrar completamente en producción. ¡Sigue aprendiendo y mejorando tus habilidades de programación!