2-JSON Web Tokens
https://www.youtube.com/watch?v=kQQbk5dFLM0
JSON Web Tokens (JWT): Una forma segura de transmitir información
Hoy quisiera hablar de un tema diferente: los JSON Web Tokens o JWT. Es un estándar de internet que define una forma segura de transmitir información entre clientes, servidores o diferentes sistemas, asegurando que se pueda verificar la autenticidad y que no sea modificable durante la transmisión.
¿Qué es un JWT?
La información se transmite en forma de un token compuesto por tres cadenas alfanuméricas separadas por puntos. Está en formato JSON, lo que facilita su procesamiento y lectura en diferentes sistemas y lenguajes de programación.
Ejemplo práctico con PHP
Vamos a ver un ejemplo usando PHP 8 y la librería firebase/php-jwt:
<?php
require_once 'vendor/autoload.php';
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
// Clave secreta para firmar el token
$secretKey = 'mi_clave_super_secreta';
// Datos que queremos incluir en el token (payload)
$payload = [
'iss' => 'mi_servidor.com', // Emisor del token
'aud' => 'mi_cliente.com', // Audiencia del token
'iat' => time(), // Tiempo de emisión
'exp' => time() + 3600, // Tiempo de expiración (1 hora)
'data' => [ // Datos personalizados
'user_id' => 123,
'username' => 'juanperez'
]
];
try {
// Generar el token
$jwt = JWT::encode($payload, $secretKey, 'HS256');
echo "Token generado: " . $jwt . "\n\n";
// Decodificar y verificar el token
$decoded = JWT::decode($jwt, new Key($secretKey, 'HS256'));
echo "Token verificado correctamente:\n";
print_r($decoded);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>¿Para qué se usan los JWT?
Los JWT se utilizan normalmente en aplicaciones web y móviles para:
Autenticar usuarios
Proteger la privacidad de la información transmitida
Evitar estar enviando usuarios y claves constantemente
Flujo típico de JWT:
El servidor crea un token, lo firma y lo envía al cliente
El cliente envía sus solicitudes incluyendo el token
El servidor verifica la autenticidad del token
Si el token es válido, se aceptan los datos del cliente
Estructura de un JWT
Un token JWT tiene tres partes:
Header: Especifica el algoritmo de encriptación
Payload: Contiene la información (claims)
Signature: Verifica que el token no ha sido alterado
Consideraciones de seguridad
No incluir información sensible en el payload ya que es visible
Usar claves seguras y almacenarlas de forma segura
Implementar tiempos de expiración adecuados
Validar siempre la firma del token
Los JWT son una solución eficiente y estandarizada para la autenticación y transmisión segura de información en aplicaciones modernas.
Comentarios
Publicar un comentario