Быстрый старт

Lantern за пять минут

Три команды к демо-библиотеке, три к вашему серверу и весь путь на одной схеме.

Прочитать демо-библиотеку

Демо — статическая библиотека, которую отдаёт этот сайт: ничего устанавливать и входить никуда не нужно.

  1. Прочитать handshake

    Каждая библиотека в одном документе сообщает, что она такое, какие возможности предлагает и какие у неё лимиты.

    curl -s https://lantern.boreale.dev/demo/lantern.json
  2. Показать его приложения

    Страница приложений для одной платформы: у каждого есть размер, sha256 и путь к файлу.

    curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json
  3. Скачать и проверить

    SHA-256 файла совпадает с заявленным приложением. Клиент отвергает то, что не совпадает.

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

Ещё для проб, включая библиотеки-ловушки для клиентов: Демонстрационная библиотека

Работа с вашим сервером

Сервер с аккаунтами сначала просит сопрячь устройство. В этих вызовах вымышленный адрес.

  1. Найти

    В локальной сети клиент находит его UDP-датаграммой; по адресу он читает handshake по известному пути.

    curl -s https://shelf.example.org/.well-known/lantern
  2. Сопряжение

    Сервер отвечает кодом, который вводят на другом устройстве, где владелец входит и подтверждает.

    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. Вызвать

    С полученным токеном (bearer); устройство, сопряжённое с ключом, дополнительно подписывает каждый запрос.

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

Весь путь

Пройдите по шагам: каждое нажатие подсвечивает один шаг и приглушает остальные.

УстройствоСерверТелефон пользователяUDP 47115 {"lantern":"discover"}{"lantern":"server", uid, port, base}Лишь подсказка: доверие даёт TLS и сопряжениеGET /.well-known/lanternhandshake: 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 signature200 · 401 · 403
От обнаружения сервера до первого подписанного вызова
  1. Устройство → Сервер: UDP 47115 {"lantern":"discover"}
  2. Сервер → Устройство: {"lantern":"server", uid, port, base}
  3. Лишь подсказка: доверие даёт TLS и сопряжение
  4. Устройство → Сервер: GET /.well-known/lantern
  5. Сервер → Устройство: handshake: uid, versions, platforms, features, limits
  6. Сопряжение (§ 5.2)
  7. Устройство → Сервер: POST /v1/pairing {device, scopes, key}
  8. Сервер → Устройство: code KQ4M-7TXD, verify_complete, poll, interval
  9. Показывает код, QR-код и короткий отпечаток ключа
  10. Телефон пользователя → Сервер: Открывает ссылку, входит, сверяет отпечаток и подтверждает
  11. Устройство → Сервер: GET <poll> (every interval)
  12. Сервер → Устройство: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
  13. Закрепляет ключ сервера за этим uid (§ 5.3)
  14. Затем при каждом вызове
  15. Устройство → Сервер: Authorization: Bearer et_… + request signature
  16. Сервер → Устройство: 200 · 401 · 403

Спецификация