PyJWT: manejo de tokens JWT en Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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:

  1. El usuario se autentica en el servidor
  2. El servidor genera un token JWT con la información del usuario
  3. El cliente guarda el token y lo envía en la cabecera Authorization
  4. 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

Recommendations