Schnellstart

Lantern in fünf Minuten

Drei Befehle gegen die Demo-Bibliothek, drei gegen einen eigenen Server und der ganze Weg in einer Abbildung.

Die Demo-Bibliothek lesen

Die Demo ist eine statische Bibliothek, die mit dieser Seite ausgeliefert wird: nichts zu installieren, keine Anmeldung.

  1. Den Handshake lesen

    Jede Bibliothek sagt in einem Dokument, was sie ist, welche Funktionen sie bietet und wo ihre Grenzen liegen.

    curl -s https://lantern.boreale.dev/demo/lantern.json
  2. Seine Apps auflisten

    Eine Seite Apps für eine Plattform: Jede trägt Größe, sha256 und Pfad ihrer Datei.

    curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json
  3. Herunterladen und prüfen

    Das SHA-256 der Datei ist das, das die App angekündigt hat. Ein Client lehnt ab, was nicht passt.

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

Mehr zum Ausprobieren, auch Bibliotheken, die einen Client aus der Bahn werfen sollen: Demo-Bibliothek

Mit einem eigenen Server sprechen

Ein Server mit Konten verlangt zuerst die Kopplung des Geräts. Diese Aufrufe verwenden eine erfundene Adresse.

  1. Finden

    In einem lokalen Netz entdeckt ein Client ihn per UDP-Datagramm; mit einer Adresse liest er den Handshake an einem bekannten Pfad.

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

    Der Server antwortet mit einem Code, der auf einem anderen Gerät eingegeben wird, wo sich der Besitzer anmeldet und genehmigt.

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

    Mit dem erhaltenen Token als Bearer; ein mit Schlüssel gekoppeltes Gerät signiert zusätzlich jede Anfrage.

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

Der ganze Weg

Gehen Sie ihn Schritt für Schritt durch: Jeder Klick hebt einen Schritt hervor und blendet die übrigen aus.

GerätServerHandy des NutzersUDP 47115 {"lantern":"discover"}{"lantern":"server", uid, port, base}Nur ein Hinweis: Vertrauen kommt aus TLS und KopplungGET /.well-known/lanternhandshake: uid, versions,platforms, features, limitsKopplung (§ 5.2)POST /v1/pairing{device, scopes, key}code KQ4M-7TXD, verify_complete,poll, intervalZeigt den Code, einen QR-Codeund den kurzen Fingerabdruck des SchlüsselsÖffnet den Link, meldet sich an,vergleicht den Fingerabdruck, genehmigtGET <poll> (every interval)202 … then 200 {token: et_…}or 410 gone · 429 slow_downPinnt den Schlüssel des Serversfür diese uid (§ 5.3)Danach bei jedem AufrufAuthorization: Bearer et_…+ request signature200 · 401 · 403
Vom Finden eines Servers bis zum ersten signierten Aufruf
  1. Gerät → Server: UDP 47115 {"lantern":"discover"}
  2. Server → Gerät: {"lantern":"server", uid, port, base}
  3. Nur ein Hinweis: Vertrauen kommt aus TLS und Kopplung
  4. Gerät → Server: GET /.well-known/lantern
  5. Server → Gerät: handshake: uid, versions, platforms, features, limits
  6. Kopplung (§ 5.2)
  7. Gerät → Server: POST /v1/pairing {device, scopes, key}
  8. Server → Gerät: code KQ4M-7TXD, verify_complete, poll, interval
  9. Zeigt den Code, einen QR-Code und den kurzen Fingerabdruck des Schlüssels
  10. Handy des Nutzers → Server: Öffnet den Link, meldet sich an, vergleicht den Fingerabdruck, genehmigt
  11. Gerät → Server: GET <poll> (every interval)
  12. Server → Gerät: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
  13. Pinnt den Schlüssel des Servers für diese uid (§ 5.3)
  14. Danach bei jedem Aufruf
  15. Gerät → Server: Authorization: Bearer et_… + request signature
  16. Server → Gerät: 200 · 401 · 403

Spezifikation