빠른 시작

5분 만에 보는 Lantern

데모 라이브러리에 명령 3개, 직접 운영하는 서버에 3개, 전체 흐름은 그림 하나로.

데모 라이브러리 읽기

데모는 이 사이트가 제공하는 정적 라이브러리입니다. 설치도 로그인도 필요 없습니다.

  1. 핸드셰이크 읽기

    모든 라이브러리는 자신이 무엇인지, 어떤 기능을 제공하는지, 한도가 얼마인지 문서 하나로 알려 줍니다.

    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 데이터그램으로 찾고, 주소가 있으면 알려진 경로에서 핸드셰이크를 읽습니다.

    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

명세