Inicio rápido

Lantern en cinco minutos

Tres comandos contra la biblioteca de demostración, tres contra un servidor propio y todo el camino en una figura.

Leer la biblioteca de demostración

La demostración es una biblioteca estática servida con este sitio: nada que instalar, ninguna cuenta.

  1. Leer su handshake

    Cada biblioteca dice en un solo documento qué es, qué funciones ofrece y cuáles son sus límites.

    curl -s https://lantern.boreale.dev/demo/lantern.json
  2. Listar sus apps

    Una página de apps de una plataforma: cada una lleva su tamaño, su sha256 y la ruta de su archivo.

    curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json
  3. Descargar y comprobar

    El SHA-256 del archivo es el que anunciaba la app. Un cliente rechaza lo que no coincide.

    curl -s https://lantern.boreale.dev/demo/v1/blobs/sha256/fa75492f7b78cad7ca4044e8fb548ac67bfd7fbf05242ceecb29ebe492218a0d | sha256sum

Más pruebas, incluidas bibliotecas hechas para romper un cliente: Biblioteca de demostración

Hablar con un servidor propio

Un servidor con cuentas pide primero que el dispositivo se empareje. Estas llamadas usan una dirección inventada.

  1. Encontrarlo

    En una red local, un cliente lo descubre con un datagrama UDP; con una dirección, lee el handshake en una ruta conocida.

    curl -s https://shelf.example.org/.well-known/lantern
  2. Emparejar

    El servidor responde con un código que se introduce en otro dispositivo, donde su propietario inicia sesión y aprueba.

    curl -s -X POST https://shelf.example.org/api/lantern/v1/pairing \
      -H 'Content-Type: application/json' \
      -d '{"schema":1,"device":"My console","scopes":["library"]}'
  3. Llamarlo

    Con el token recibido, como portador; un dispositivo emparejado con clave firma además cada solicitud.

    curl -s https://shelf.example.org/api/lantern/v1/apps?page_size=5 \
      -H 'Authorization: Bearer et_…'

Todo el camino

Recórralo paso a paso: cada pulsación ilumina un paso y atenúa el resto.

DispositivoServidorTeléfono del usuarioUDP 47115 {"lantern":"discover"}{"lantern":"server", uid, port, base}Solo una pista: la confianza viene de TLS y del emparejamientoGET /.well-known/lanternhandshake: uid, versions,platforms, features, limitsEmparejamiento (§ 5.2)POST /v1/pairing{device, scopes, key}code KQ4M-7TXD, verify_complete,poll, intervalMuestra el código, un QRy la huella corta de la claveAbre el enlace, inicia sesión,compara la huella y apruebaGET <poll> (every interval)202 … then 200 {token: et_…}or 410 gone · 429 slow_downFija la clave del servidorpara este uid (§ 5.3)Después, en cada llamadaAuthorization: Bearer et_…+ request signature200 · 401 · 403
Del hallazgo de un servidor a la primera llamada firmada
  1. Dispositivo → Servidor: UDP 47115 {"lantern":"discover"}
  2. Servidor → Dispositivo: {"lantern":"server", uid, port, base}
  3. Solo una pista: la confianza viene de TLS y del emparejamiento
  4. Dispositivo → Servidor: GET /.well-known/lantern
  5. Servidor → Dispositivo: handshake: uid, versions, platforms, features, limits
  6. Emparejamiento (§ 5.2)
  7. Dispositivo → Servidor: POST /v1/pairing {device, scopes, key}
  8. Servidor → Dispositivo: code KQ4M-7TXD, verify_complete, poll, interval
  9. Muestra el código, un QR y la huella corta de la clave
  10. Teléfono del usuario → Servidor: Abre el enlace, inicia sesión, compara la huella y aprueba
  11. Dispositivo → Servidor: GET <poll> (every interval)
  12. Servidor → Dispositivo: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
  13. Fija la clave del servidor para este uid (§ 5.3)
  14. Después, en cada llamada
  15. Dispositivo → Servidor: Authorization: Bearer et_… + request signature
  16. Servidor → Dispositivo: 200 · 401 · 403

Especificación