デモライブラリを読む
デモはこのサイトが配信する静的ライブラリです。インストールもサインインも不要です。
-
ハンドシェイクを読む
各ライブラリは、自身が何か、どの機能を提供し、どんな制限があるかを1つの文書で示します。
curl -s https://lantern.boreale.dev/demo/lantern.json -
アプリを一覧する
1つのプラットフォームのアプリ1ページ。各アプリにサイズ、sha256、ファイルのパスが付きます。
curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json -
ダウンロードして検証
ファイルのSHA-256はアプリが示したものと同じです。一致しなければクライアントは拒否します。
curl -s https://lantern.boreale.dev/demo/v1/blobs/sha256/fa75492f7b78cad7ca4044e8fb548ac67bfd7fbf05242ceecb29ebe492218a0d | sha256sum
ほかにも試せます。クライアントを壊すためのライブラリもあります: デモライブラリ
自分のサーバーと話す
アカウントのあるサーバーは、まずペアリングを求めます。これらの呼び出しは架空のアドレスを使います。
-
見つける
ローカルネットワークではUDPデータグラムで発見し、アドレスがあれば既知のパスでハンドシェイクを読みます。
curl -s https://shelf.example.org/.well-known/lantern -
ペアリング
サーバーはコードを返し、所有者は別の端末でサインインしてコードを入力・承認します。
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"]}' -
呼び出す
受け取ったトークンをベアラーとして使います。鍵でペアリングした端末は各リクエストにも署名します。
curl -s https://shelf.example.org/api/lantern/v1/apps?page_size=5 \ -H 'Authorization: Bearer et_…'
全体の流れ
1ステップずつ進めます。押すたびに1つのステップが点灯し、他は暗くなります。
- 端末 → サーバー: UDP 47115 {"lantern":"discover"}
- サーバー → 端末: {"lantern":"server", uid, port, base}
- ヒントにすぎません。信頼はTLSとペアリングから生まれます
- 端末 → サーバー: GET /.well-known/lantern
- サーバー → 端末: handshake: uid, versions, platforms, features, limits
- ペアリング (§ 5.2)
- 端末 → サーバー: POST /v1/pairing {device, scopes, key}
- サーバー → 端末: code KQ4M-7TXD, verify_complete, poll, interval
- コード、QRコード、 鍵の短いフィンガープリントを表示
- ユーザーのスマホ → サーバー: リンクを開き、サインインし、 フィンガープリントを照合して承認
- 端末 → サーバー: GET <poll> (every interval)
- サーバー → 端末: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
- このuidのサーバー鍵を ピン留め (§ 5.3)
- 以降、毎回の呼び出しで
- 端末 → サーバー: Authorization: Bearer et_… + request signature
- サーバー → 端末: 200 · 401 · 403