Entradas

31-tokens se envían por los headers HTTP

  Las claves y tokens se envían por los headers HTTP principalmente por estas razones: 1.  Separación de responsabilidades Los headers están diseñados específicamente para metadatos y información de control El body se reserva para el contenido principal de la solicitud 2.  Seguridad Evita que credenciales aparezcan en URLs (que se guardan en historiales y logs) Los headers no se cachean tan fácilmente como las URLs Mayor control sobre cómo se transmiten los datos sensibles 3.  Estándares y convenciones Authorization header  es el estándar HTTP para credenciales (RFC 7235) Formatos establecidos como:  Authorization: Bearer <token> API Keys  suelen ir en headers personalizados como  X-API-Key 4.  Prácticas RESTful Las URLs deberían identificar recursos, no contener credenciales Mantiene las URLs limpias y consistentes 5.  Manejo consistente Los frameworks y librerías están optimizados para leer credenciales de headers Facilita la imp...

30-Usando JSON Web Tokens en PHP con php-jwt

   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 <?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 e...

29-Autenticación JWT en PHP: Explicación y Ejemplo

  Autenticación JWT en PHP: Explicación y Ejemplo ¿Qué es JWT? JWT (JSON Web Token) es un estándar abierto que permite transmitir información de forma segura entre partes como un objeto JSON. Es muy utilizado para autenticación y autorización en APIs. ¿Por qué usar JWT? Sin estado (Stateless) : El servidor no necesita almacenar sesiones Seguro : Los tokens están firmados digitalmente Portable : Funciona en múltiples dominios y aplicaciones Extensible : Puedes incluir cualquier información en el payload Estructura de un JWT Un JWT tiene 3 partes separadas por puntos: Header: Metadatos sobre el tipo de token y algoritmo Payload: Los datos que quieres transmitir Signature: Firma digital para verificar autenticidad Ejemplo completo de login con JWT 1. Instalación de dependencias bash composer require firebase/php-jwt 2. Configuración inicial php <?php require 'vendor/autoload.php' ; use Firebase \ JWT \ JWT ; use Firebase \ JWT \ Key ; // Configuración $secret_key = ...

28-JWT en 10 minutos - ¿Qué es JWT? ¿Para que sirve? ¿Cuando usarlo? ¿Cómo se usa?

   https://www.youtube.com/watch?v=tWQobKFQLG0 Tutorial de JWT (JSON Web Tokens) ¿Qué es un JWT? JWT significa  JSON Web Token . Es un estándar abierto que permite definir de manera compacta y autocontenida cómo transmitir información entre distintas aplicaciones o entidades utilizando objetos JSON. Características clave: Información verificable : El contenido del token está firmado digitalmente Puede usar diferentes métodos de firma : Secreto compartido (solo cliente y servidor lo conocen) Clave pública/privada Formato estándar : Compacto y fácil de transmitir Caso de uso principal: Autorización El uso más común de JWTs es para  autorización , donde un usuario incluye el token en cada solicitud a una API para identificarse y demostrar qué acceso tiene. Comparación: Autenticación tradicional vs JWT Autenticación basada en sesiones (tradicional) Usuario envía credenciales (login) Servidor crea sesión y la almacena Servidor devuelve cookie con session ID Cliente incluy...