Test del Flujo L402 Completo

Simula el ciclo completo: solicitud → 402 challenge → pago Lightning → acceso con token L402

Flujo del Protocolo L402

Diagrama visual de los 5 pasos que componen una transaccion L402 completa:

  • Paso 1 — Solicitud: El cliente hace GET /ruta a un recurso protegido sin incluir credenciales.
  • Paso 2 — Challenge 402: El servidor responde con HTTP 402 Payment Required y un header WWW-Authenticate: L402 que contiene un macaroon (token criptografico HMAC-SHA256) y una invoice Lightning Network.
  • Paso 3 — Pago Lightning: El cliente paga la invoice a traves de la Lightning Network. Al completarse el pago recibe un preimage (prueba criptografica de pago donde SHA256(preimage) == payment_hash).
  • Paso 4 — Acceso: El cliente envia Authorization: L402 macaroon:preimage. El servidor verifica el HMAC del macaroon con su root_key y comprueba que el preimage coincide con el payment_hash.
  • Paso 5 — Contenido: Si la verificacion es correcta, el servidor responde 200 OK con el contenido protegido.

Este flujo es atomico y sin confianza: el pago y la autorizacion estan vinculados criptograficamente. No hay cuentas, registros ni sesiones.

Flujo del Protocolo L402

Cliente
→ GET /ruta
Servidor L402
← 402 + WWW-Authenticate
Pagar invoice
→ Lightning Network
LND Node
→ Authorization: L402 mac:preimage
Contenido
← 200 OK

Ejecutar Test

Panel de control para ejecutar el flujo L402 completo de forma automatizada:

  • Selector de servicio: Lista todos los servicios protegidos registrados en la base de datos. Cada servicio tiene una ruta (ej: /introduccion), un precio en satoshis, y una descripcion. Los servicios se cargan via GET /api/services.
  • Ejecutar flujo completo: Lanza automaticamente los 5 pasos del protocolo L402 y muestra cada paso en el log inferior. Primero solicita el recurso (obtiene 402), luego paga la invoice via el nodo LND-Client de testnet, y finalmente accede al contenido con el token L402.

LND Client (testpay)

Nodo Lightning secundario configurado exclusivamente para testing:

  • Balance: Fondos disponibles en canales Lightning del nodo cliente. Si es 0, los pagos fallaran con insufficient_balance.
  • Este nodo es diferente al nodo servidor — simula un cliente real que paga por contenido. En produccion, el pago lo haria el usuario desde su propia wallet.
  • Endpoint: POST /api/testpay envia la invoice al LND-Client (puerto gRPC 10010) que ejecuta el pago via Lightning Network.

Ejecutar Test

LND Client (testpay)

Balance: cargando...

Log del Protocolo

Registro en tiempo real de cada paso del flujo L402. Cada linea esta codificada por colores:

  • Violeta (req): Peticiones HTTP salientes — GET o POST que el cliente envia al servidor.
  • Azul (hdr): Headers HTTP relevantes como WWW-Authenticate, Authorization, y el body de las peticiones.
  • Verde (res): Respuestas exitosas del servidor — 402 Payment Required, 200 OK, confirmacion de pago.
  • Amarillo (info): Datos intermedios: macaroon parseado, invoice, preimage obtenido, contenido recibido.
  • Rojo (err): Errores: fallo de pago, balance insuficiente, token invalido, error de red.

Datos clave que aparecen en el log:

  • Macaroon: Token HMAC-SHA256 en base64 que identifica el pago. Generado por el servidor con su root_key secreta. Incluye el payment_hash, service_id y expiracion.
  • Invoice: Solicitud de pago Lightning (formato BOLT11, empieza por lntb en testnet). Contiene el payment_hash y el importe en satoshis.
  • Preimage: Prueba criptografica de pago (32 bytes hex). Cumple SHA256(preimage) == payment_hash. Solo se revela al completar el pago.
  • Token L402: Combinacion macaroon:preimage que se guarda en localStorage y puede reutilizarse hasta que expire.

Log del Protocolo

Listo para ejecutar test. Selecciona un servicio y pulsa "Ejecutar".