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.
Skema Token
Semua JWT memiliki tiga bidang: header, payload, dan signature.
-
Header menentukan:
-
alg
adalah algoritma penandatanganan. Ini adalah ES384, algoritma tanda tangan ECDSA yang menggunakan algoritma hash SHA-384. -
typ
adalah jenis token, JWT.
{ "alg": "ES384", "typ": "JWT" }
-
-
Payload berisi data khusus untuk Amazon IVS:
-
channel-arn
adalah referensi untuk permintaan pemutaran video. -
access-control-allow-origin
adalah bidang opsional yang dapat digunakan untuk membatasi pemutaran ke asaltertentu; 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-enforcement
adalah bidang opsional yang dapat digunakan untuk memperkuat batasan asal yang ditentukan diaccess-control-allow-origin
lapangan. Secara default,access-control-allow-origin
pembatasan hanya berlaku untuk daftar putar multivarian. Jikastrict-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. GunakansetOrigin
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 menambahkancrossorigin="anonymous"
ke elemen video, untuk memastikan bahwa header permintaan asal dikirim. Contoh:<video crossorigin="anonymous"></video>
. -
single-use-uuid
adalah 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 untukexp
klaim adalah 10 menit di masa depan. -
viewer-id
adalah 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 untukexp
adalah 10 menit di masa depan. -
viewer-session-version
adalah 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. -
exp
adalah 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. (Lihatexp
di JWT RFC bagian4.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
-
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
-
Merakit token.
base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + base64UrlEncode(signature)
-
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>