Menghasilkan dan Menandatangani Token Pemutaran - Amazon Interactive Video Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menghasilkan dan Menandatangani Token Pemutaran

Untuk detail tentang bekerja dengan JWT dan pustaka yang didukung untuk menandatangani token, kunjungi jwt.io. Pada antarmuka jwt.io, Anda harus memasukkan kunci pribadi Anda untuk menandatangani token. Kunci publik hanya diperlukan jika Anda ingin memverifikasi token.

Skema Token

Semua JWT memiliki tiga bidang: header, payload, dan signature.

  • Header menentukan:

    • algadalah algoritma penandatanganan. Ini adalah ES384, algoritma tanda tangan ECDSA yang menggunakan algoritma hash SHA-384.

    • typadalah jenis token, JWT.

    { "alg": "ES384", "typ": "JWT" }
  • Payload berisi data khusus untuk Amazon IVS:

    • channel-arnadalah referensi untuk permintaan pemutaran video.

    • access-control-allow-originadalah bidang opsional yang dapat digunakan untuk membatasi pemutaran ke asal tertentu; yaitu, untuk membuat aliran dapat dilihat hanya dari situs web tertentu. Misalnya, Anda mungkin ingin mencegah orang menyematkan pemain di situs web lain. Secara default, pemutaran diizinkan di semua asal. (Perhatikan bahwa ini hanya membatasi klien browser; itu tidak membatasi pemutaran dari klien non-browser.) Bidang ini mungkin berisi beberapa asal, dipisahkan dengan koma. Domain wildcard diperbolehkan: setiap asal dapat memulai nama hostnya dengan* (contoh: https://*.amazon.com).

    • strict-origin-enforcementadalah bidang opsional yang dapat digunakan untuk memperkuat batasan asal yang ditentukan di access-control-allow-origin lapangan. Secara default, access-control-allow-origin pembatasan hanya berlaku untuk daftar putar multivarian. Jika strict-origin-enforcement diaktifkan, server akan memberlakukan persyaratan bahwa asal permintaan cocok dengan token untuk semua permintaan pemutaran (termasuk daftar putar multivariant, daftar putar varian, dan segmen). Ini berarti bahwa semua klien (termasuk klien non-browser) harus memberikan header permintaan asal yang valid dengan setiap permintaan. Gunakan setOrigin metode ini untuk mengatur header di SDK pemutar iOS dan Android IVS. Ini diatur secara otomatis di browser web kecuali iOS Safari. Untuk iOS Safari, Anda perlu menambahkan crossorigin="anonymous" ke elemen video, untuk memastikan bahwa header permintaan asal dikirim. Contoh:<video crossorigin="anonymous"></video>.

    • single-use-uuidadalah bidang opsional yang berisi pengidentifikasi unik universal (UUID) yang valid yang Anda hasilkan sebagai bagian dari pembuatan token. Jika Anda menambahkan bidang ini dan nilai UUID, token terkait yang Anda hasilkan tidak valid setelah digunakan untuk mengambil daftar putar multivarian dan menonton streaming. Token autentikasi sekali pakai mempersulit pengguna jahat untuk berbagi streaming di saluran pribadi Anda dengan pemirsa lain. Perhatikan bahwa saat menggunakan single-use-uuid klaim, nilai maksimum untuk exp klaim adalah 10 menit di masa depan.

    • viewer-idadalah bidang opsional yang berisi ID yang digunakan untuk melacak dan merujuk ke penampil kepada siapa token diberikan. Bidang ini diperlukan untuk memungkinkan kemampuan untuk mencabut sesi menonton pemirsa di masa depan. Panjang maksimum adalah 40 karakter, dan nilainya harus memenuhi syarat sebagai string. Jangan gunakan bidang ini untuk mengidentifikasi pribadi, rahasia, atau informasi sensitif. Perhatikan bahwa saat menggunakanviewer-id, nilai maksimum untuk exp adalah 10 menit di masa depan.

    • viewer-session-versionadalah bidang opsional yang berisi versi untuk dikaitkan dengan sesi penampil ini. Saat mencabut sesi penampil, nilai ini dapat digunakan untuk memfilter sesi pemirsa mana yang dicabut. Misalnya, menentukan stempel waktu Unix di sini akan memungkinkan pencabutan semua sesi yang dimulai sebelum waktu yang ditentukan. Nilai harus berupa integer bertanda 64-bit (Int64). Bidang ini dimaksudkan untuk disediakan (opsional) di sampingviewer-id; ia tidak melakukan apa pun dengan sendirinya. Nilai default-nya adalah 0.

    • expadalah stempel waktu Unix UTC ketika token kedaluwarsa. Ini tidak menunjukkan lamanya waktu aliran dapat dilihat. Token divalidasi saat pemirsa menginisialisasi pemutaran, bukan di seluruh aliran. Masukkan nilai ini sebagai nilai tipe integer.

      Perhatikan bahwa stempel waktu Unix adalah nilai numerik yang mewakili jumlah detik dari 1970-01-01T 00:00:00 Z UTC hingga tanggal/waktu UTC yang ditentukan, mengabaikan detik kabisat. Bahasa yang berbeda mengukur cap waktu Unix dalam satuan yang berbeda; misalnya, JavaScript Date.now() mengembalikan waktu dalam milidetik. (Lihat exp di JWT RFC bagian 4.1.4.)

    { "aws:channel-arn": "<channel_arn>", "aws:access-control-allow-origin": "<your-origin>", "aws:strict-origin-enforcement": true, "aws:single-use-uuid": "<UUID>", "aws:viewer-id": "<viewer_id>", "aws:viewer-session-version": "<viewer_session_version>", "exp": <unix timestamp> }
  • Untuk membuat tanda tangan, gunakan kunci pribadi dengan algoritme yang ditentukan di header (ES384) untuk menandatangani header yang dikodekan dan muatan yang dikodekan.

    ECDSASHA384( base64UrlEncode(header) + "." + base64UrlEncode(payload), <private-key> )

Petunjuk

  1. Buat tanda tangan token dengan algoritme penandatanganan ES384 dan kunci pribadi yang dikaitkan dengan salah satu sumber daya kunci pemutaran Anda (lihat contoh di atas). ECDSASHA384

  2. Merakit token.

    base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + base64UrlEncode(signature)
  3. Tambahkan token yang ditandatangani ke URL pemutaran sebagai parameter kueri.

    https://b37c565f6d790a14a0e78afaa6808a80.us-west-2.playback.live-video.net/ api/video/v1/aws.ivs.us-west-2.123456789. channel.fbc789c1-2c56-4ce6-a30a-d99275dc4481.m3u8?token=<token>