Introducción a PyJWT
JSON Web Token (JWT) se ha convertido en el estándar para la autenticación y autorización de APIs. Permite transmitir información de identidad entre el cliente y el servidor de forma segura, sin necesidad de almacenar sesiones en el servidor. Una de las librerías más populares en Python para trabajar con JWT es PyJWT.
PyJWT es una librería de Python para manejar tokens JWT que simplifica la creación, decodificación y verificación de JWT, ofreciendo soporte para varios algoritmos de cifrado. Este artículo te explicará en detalle cómo usar PyJWT de manera eficiente y segura en tu proyecto.
Fundamentos de JWT (JSON Web Token)
Estructura de un token JWT
Un JWT consta de tres partes separadas por puntos:
header.payload.signature
- Header — contiene el tipo de token y el algoritmo usado (ej. HS256)
- Payload — contiene los claims (datos útiles)
- Signature — se usa para verificar la autenticidad del token
Ventajas de usar JWT
- Stateless: el servidor no necesita almacenar sesiones
- Compacto: fácil de transmitir en cabeceras HTTP
- Seguridad: soporte para cifrado HMAC y RSA
- Multiplataforma: funciona en todos los lenguajes de programación
- Autocontenido: contiene toda la información necesaria del usuario
Principio de funcionamiento de JWT
JWT funciona de la siguiente manera:
- El usuario se autentica en el servidor
- El servidor genera un token JWT con la información del usuario
- El cliente guarda el token y lo envía en la cabecera Authorization
- El servidor verifica la firma del token y extrae los datos del usuario
Instalación y configuración de PyJWT
Cómo instalar PyJWT
pip install PyJWT
Para trabajar con algoritmos RSA y ECDSA, instala las dependencias adicionales:
pip install "PyJWT[crypto]"
Importación y configuración inicial
import jwt
import datetime
import os
from typing import Dict, Any
PyJWT implementa completamente el estándar RFC 7519 y proporciona una interfaz sencilla para generar y verificar tokens.
Descripción detallada de la librería PyJWT
Historia y evolución
PyJWT fue creada en 2013 y es una de las librerías más populares para trabajar con tokens JWT en Python. La librería se desarrolla activamente y cuenta con el respaldo de la comunidad, actualizándose regularmente para cumplir con los últimos estándares de seguridad.
Arquitectura de la librería
PyJWT está construida sobre una arquitectura modular con una clara separación de responsabilidades:
- Núcleo de codificación/decodificación — funciones principales para trabajar con tokens
- Módulo de algoritmos — soporte para varios algoritmos de cifrado
- Módulo de excepciones — manejo de errores y situaciones excepcionales
- Módulo de utilidades — funciones auxiliares para trabajar con tiempo y claves
Funcionalidades principales
- Soporte para todos los algoritmos JWT estándar
- Verificación automática del tiempo de vida del token
- Posibilidad de agregar claims personalizados
- Soporte para diferentes tipos de claves (simétricas y asimétricas)
- Integración con frameworks web populares
Creación de tokens JWT con PyJWT
Ejemplo básico
payload = {"user_id": 123}
secret = "miclave"
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)
Especificar fecha de expiración y datos adicionales
También en la biblioteca
ARKit para Swift: guía completa con ejemplos prácticos
Cast para Go: guía completa con ejemplos prácticos
Envío de SMS en C++: API de las bibliotecas libcurl y cpprestsdk
Envío de SMS en Swift (iOS/macOS): API MessageUI y servicios de terceros
Generación de PDF en TypeScript: bibliotecas, herramientas y ejemplos de código