Saltar al pie de página
AYUDA DE PYTHON

PyJWT Python (Cómo Funciona: Una Guía para Desarrolladores)

Entre las bibliotecas de Python, PyJWT es la biblioteca más popular que proporciona una manera conveniente de codificar y decodificar JSON Web Tokens (JWTs) en proyectos de Python. Los JWTs son una forma compacta y segura de representar afirmaciones para ser transferidas entre dos partes. El paquete PyJWT facilita la implementación de tokens web JSON en Python. Los tokens JWT son ampliamente utilizados para la autenticación e intercambio de información en aplicaciones web. El paquete tiene amplia documentación en línea para apoyar a los desarrolladores. En este artículo, también veremos IronPDF de Iron Software para generar documentos PDF más tarde.

Características principales

  1. Codificación y decodificación de JWT: PyJWT te permite codificar y decodificar JWTs fácilmente. Puedes crear un token codificando un payload con una clave secreta y un algoritmo, y luego decodificarlo para verificar el payload.
  2. Soporte para Múltiples Algoritmos: PyJWT admite varios algoritmos para firmar tokens, incluidos HMAC (HS256, HS384, HS512) y RSA (RS256, RS384, RS512). Admite tanto algoritmos simétricos como asimétricos.
  3. Validación de Afirmaciones: La biblioteca proporciona soporte incorporado para validar afirmaciones estándar como iss (emisor), sub (sujeto), aud (audiencia) y exp (tiempo de expiración), lo que ayuda a la autenticación segura basada en tokens.

Instalación

Para instalar PyJWT, puedes usar pip:

pip install pyjwt
pip install pyjwt
SHELL

Para soporte criptográfico adicional, puedes instalarlo con la opción crypto:

pip install pyjwt[crypto]
pip install pyjwt[crypto]
SHELL

Uso básico

Aquí hay un ejemplo simple de cómo usar PyJWT en una implementación de Python:

import jwt

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"
# Create the JWT token with a secret key using HS256 algorithm
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)

# Decoding a JWT
# Decode the JWT token to retrieve the original payload
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)
import jwt

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"
# Create the JWT token with a secret key using HS256 algorithm
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)

# Decoding a JWT
# Decode the JWT token to retrieve the original payload
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)
PYTHON

En este ejemplo, creamos un JWT codificando un payload con una clave secreta utilizando el algoritmo HS256. Luego decodificamos el token para recuperar el payload original.

Resultado

PyJWT Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 1 - Ejemplo de payload de respuesta después de decodificación

Casos de uso

  1. Autenticación: los JWTs se utilizan comúnmente para la autenticación en aplicaciones web. Después de que un usuario inicia sesión, el servidor genera un JWT y devuelve el token firmado al cliente. El cliente puede verificar la identidad del usuario usando este token e incluir el token en solicitudes posteriores.
  2. Intercambio de Información: Las partes pueden transmitir información de forma segura usando JWTs. El payload puede incluir cualquier dato; la firma del token asegura su integridad.

Presentando IronPDF

PyJWT Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 2 - IronPDF para Python: La Biblioteca de PDF de Python

IronPDF es una poderosa biblioteca de Python para crear, editar y firmar PDFs utilizando HTML, CSS, imágenes y JavaScript. Ofrece un rendimiento de alta calidad mientras usa memoria mínima. Los usuarios pueden generar PDFs desde HTML, fusionar o dividir documentos PDF, extraer texto e imágenes de PDFs, aplicar marcas de agua, rasterizar un PDF a formatos de imagen como JPEG y PNG, encriptar archivos PDF y más. IronPDF ofrece una amplia gama de operaciones PDF.

Características principales de IronPDF

Conversión de HTML a PDF

Los usuarios pueden convertir archivos HTML, cadenas HTML y URLs a PDFs. Por ejemplo, renderizar una página web como un PDF usando el renderizador PDF de Chrome de IronPDF.

Soporte multiplataforma

IronPDF está diseñado para versiones de Python 3+ y se ejecuta en Windows, Mac, Linux o plataformas en la nube.

IronPDF también está disponible en .NET, Java, Python y Node.js.

Edición y firma

El usuario puede establecer propiedades, agregar seguridad con contraseñas y permisos, y aplicar firmas digitales a PDFs usando IronPDF.

Plantillas de página y configuración

IronPDF permite personalizar documentos PDF con encabezados, pies de página, números de página y márgenes ajustables. También admite diseños responsivos y tamaños de papel personalizados.

Cumplimiento de normas

El paquete IronPDF se adhiere a estándares PDF, como PDF/A y PDF/UA. Admite codificación de caracteres UTF-8 y maneja recursos como imágenes, CSS y fuentes.

Generar documentos PDF con IronPDF y PyJWT

Requisitos previos para IronPDF

  1. IronPDF usa .NET 6.0 como su tecnología subyacente. Por lo tanto, asegúrate de que el runtime .NET 6.0 esté instalado en tu sistema.
  2. Python 3.0+: Necesita tener instalada la versión 3 o posterior de Python.
  3. Pip: Instala el instalador de paquetes de Python pip para instalar el paquete IronPDF.

Para empezar, creemos un archivo Python en la raíz del proyecto para agregar nuestros scripts. Para este ejemplo, utilizamos Visual Studio Code como editor de código.

Abre Visual Studio Code y crea un archivo, pyjwtDemo.py.

Instale la biblioteca de IronPDF:

pip install ironpdf
pip install pyjwt
pip install ironpdf
pip install pyjwt
SHELL

Luego agrega el siguiente código para demostrar el uso de los paquetes de Python IronPDF y PyJWT:

import jwt
from ironpdf import ChromePdfRenderer, License

# Apply your license key
License.LicenseKey = "your-license-key"

# Initialize HTML content to be converted into PDF
content = "<h1>Awesome IronPDF with PyJWT</h1>"
content += "<h2>Encoding a JWT</h2>"

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"  # Secret key for signing
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)  # Print the generated JWT

# Append details to the HTML content
content += f"<p>Message: {payload['Message']}</p>"
content += f"<p>Secret: {secret}</p>"
content += f"<p>Generated Token: {token}</p>"

# Decoding a JWT
content += "<h2>Decoding a JWT</h2>"
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)  # Print the decoded payload

# Append decoded payload details to the HTML content
content += f"<p>Decoded Token: {decoded_payload}</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)

# Export PDF to a file
pdf.SaveAs("Demo-pyjwt.pdf")
import jwt
from ironpdf import ChromePdfRenderer, License

# Apply your license key
License.LicenseKey = "your-license-key"

# Initialize HTML content to be converted into PDF
content = "<h1>Awesome IronPDF with PyJWT</h1>"
content += "<h2>Encoding a JWT</h2>"

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"  # Secret key for signing
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)  # Print the generated JWT

# Append details to the HTML content
content += f"<p>Message: {payload['Message']}</p>"
content += f"<p>Secret: {secret}</p>"
content += f"<p>Generated Token: {token}</p>"

# Decoding a JWT
content += "<h2>Decoding a JWT</h2>"
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)  # Print the decoded payload

# Append decoded payload details to the HTML content
content += f"<p>Decoded Token: {decoded_payload}</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)

# Export PDF to a file
pdf.SaveAs("Demo-pyjwt.pdf")
PYTHON

Explicación del código

Este fragmento de código demuestra cómo usar la biblioteca jwt (JSON Web Token) junto con IronPDF para crear un documento PDF que incluye ejemplos de codificación y decodificación de JWTs.

A continuación se presenta un resumen de funciones de cada componente.

  1. Importaciones y Configuración de Clave de Licencia:

    Importa la biblioteca jwt para funcionalidades de JSON Web Token y ChromePdfRenderer de IronPDF para la generación de PDF. Establece la clave de licencia para IronPDF para habilitar sus características.

  2. Configuración de Contenido HTML:

    Inicializa la variable content con marcado HTML para incluir en el documento PDF, ilustrando diferentes pasos en el proceso.

  3. Codificación de un JWT:

    • Define un diccionario payload que contiene datos para codificar en el JWT (payload).
    • Especifica una clave secreta (secret) para firmar el JWT con el algoritmo HMAC usando SHA-256 (HS256).
    • Genera un token JWT utilizando la función jwt.encode() y lo imprime.
  4. Decodificación de un JWT:

    • Agrega marcado HTML para demostrar la decodificación de JWT.
    • Decodifica el JWT previamente generado (token) utilizando la función jwt.decode() con la misma clave y algoritmo usado para codificar.
  5. Generación de PDF:

    • Utiliza ChromePdfRenderer para renderizar la cadena HTML content en un documento PDF y guarda el archivo PDF generado como "Demo-pyjwt.pdf".

Esta configuración permite la creación de un documento PDF que muestra el uso de JWTs con IronPDF para generar PDFs de calidad profesional.

Resultado

PyJWT Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 3 - Ejemplo de salida de consola

PDF

PyJWT Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 4 - Ejemplo de salida PDF utilizando IronPDF

Licencia de IronPDF

PyJWT Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 5 - Página de licencia de IronPDF

IronPDF proporciona una licencia de prueba para permitir a los usuarios verificar sus numerosas características antes de comprar.

Coloca la clave de licencia al inicio del guión antes de usar el paquete IronPDF:

from ironpdf import License

# Apply your license key
License.LicenseKey = "your-key"
from ironpdf import License

# Apply your license key
License.LicenseKey = "your-key"
PYTHON

Conclusión

PyJWT es una biblioteca poderosa y flexible para trabajar con JSON Web Tokens en Python. Su facilidad de uso y soporte para varios algoritmos lo hacen una opción popular para implementar la autenticación basada en tokens e intercambio seguro de información en aplicaciones web. Por otro lado, IronPDF es una biblioteca versátil y rica en características para la generación de PDF que ayudará a documentar los resultados de manera estándar. Ambas bibliotecas pueden obrar maravillas para los desarrolladores para mejorar sus habilidades.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más