Avvio rapido

Lantern in cinque minuti

Tre comandi sulla libreria demo, tre su un server tuo e l'intero percorso in una figura.

Leggere la libreria demo

La demo è una libreria statica servita con questo sito: niente da installare, nessun account.

  1. Leggere il suo handshake

    Ogni libreria dice in un solo documento cos'è, quali funzioni offre e quali sono i suoi limiti.

    curl -s https://lantern.boreale.dev/demo/lantern.json
  2. Elencare le sue app

    Una pagina di app per una piattaforma: ognuna porta dimensione, sha256 e percorso del file.

    curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json
  3. Scaricare e verificare

    Lo SHA-256 del file è quello annunciato dall'app. Un client rifiuta ciò che non corrisponde.

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

Altre prove, comprese librerie fatte per mettere in crisi un client: Libreria dimostrativa

Parlare con un server tuo

Un server con account chiede prima di abbinare il dispositivo. Queste chiamate usano un indirizzo inventato.

  1. Trovarlo

    In una rete locale un client lo scopre con un datagramma UDP; con un indirizzo legge l'handshake a un percorso noto.

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

    Il server risponde con un codice da inserire su un altro dispositivo, dove il proprietario accede e approva.

    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. Chiamarlo

    Con il token ricevuto, come bearer; un dispositivo abbinato con una chiave firma anche ogni richiesta.

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

L'intero percorso

Percorrilo passo dopo passo: ogni pressione illumina un passaggio e attenua gli altri.

DispositivoServerTelefono dell'utenteUDP 47115 {"lantern":"discover"}{"lantern":"server", uid, port, base}Solo un indizio: la fiducia viene da TLS e dall'abbinamentoGET /.well-known/lanternhandshake: uid, versions,platforms, features, limitsAbbinamento (§ 5.2)POST /v1/pairing{device, scopes, key}code KQ4M-7TXD, verify_complete,poll, intervalMostra il codice, un QRe l'impronta breve della chiaveApre il link, accede,confronta l'impronta e approvaGET <poll> (every interval)202 … then 200 {token: et_…}or 410 gone · 429 slow_downFissa la chiave del serverper questo uid (§ 5.3)Poi, a ogni chiamataAuthorization: Bearer et_…+ request signature200 · 401 · 403
Dalla scoperta di un server alla prima chiamata firmata
  1. Dispositivo → Server: UDP 47115 {"lantern":"discover"}
  2. Server → Dispositivo: {"lantern":"server", uid, port, base}
  3. Solo un indizio: la fiducia viene da TLS e dall'abbinamento
  4. Dispositivo → Server: GET /.well-known/lantern
  5. Server → Dispositivo: handshake: uid, versions, platforms, features, limits
  6. Abbinamento (§ 5.2)
  7. Dispositivo → Server: POST /v1/pairing {device, scopes, key}
  8. Server → Dispositivo: code KQ4M-7TXD, verify_complete, poll, interval
  9. Mostra il codice, un QR e l'impronta breve della chiave
  10. Telefono dell'utente → Server: Apre il link, accede, confronta l'impronta e approva
  11. Dispositivo → Server: GET <poll> (every interval)
  12. Server → Dispositivo: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
  13. Fissa la chiave del server per questo uid (§ 5.3)
  14. Poi, a ogni chiamata
  15. Dispositivo → Server: Authorization: Bearer et_… + request signature
  16. Server → Dispositivo: 200 · 401 · 403

Specifica