Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Langkah 3: Bagikan Token Peserta
Sekarang setelah Anda memiliki panggung, Anda perlu membuat token dan mendistribusikannya kepada peserta, untuk memungkinkan peserta bergabung dengan panggung dan mulai mengirim dan menerima video. Ada dua pendekatan untuk menghasilkan token:
-
Buat token dengan pasangan kunci.
Kedua pendekatan ini dijelaskan di bawah ini.
Membuat Token dengan Pasangan Kunci
Anda dapat membuat token di aplikasi server Anda dan mendistribusikannya kepada peserta untuk bergabung dengan panggung. Anda perlu membuat pasangan public/private kunci ECDSA untuk menandatangani JWT dan mengimpor kunci publik ke IVS. Kemudian IVS dapat memverifikasi token pada saat stage join.
IVS tidak menawarkan kedaluwarsa kunci. Jika kunci pribadi Anda dikompromikan, Anda harus menghapus kunci publik lama.
Buat Pasangan Kunci Baru
Ada berbagai cara untuk membuat pasangan kunci. Di bawah ini, kami memberikan dua contoh.
Untuk membuat pasangan kunci baru di konsol, ikuti langkah-langkah ini:
-
Buka konsol https://console.aws.amazon.com/ivs
Amazon IVS. Pilih wilayah panggung Anda jika Anda belum berada di sana. -
Di menu navigasi kiri, pilih Real-time streaming > Tombol publik.
-
Pilih Buat kunci publik. Dialog Buat kunci publik muncul.
-
Ikuti petunjuk dan pilih Buat.
-
Amazon IVS menghasilkan pasangan kunci baru. Kunci publik diimpor sebagai sumber daya kunci publik dan kunci pribadi segera tersedia untuk diunduh. Kunci publik juga dapat diunduh nanti jika perlu.
Amazon IVS menghasilkan kunci di sisi klien dan tidak menyimpan kunci pribadi. Pastikan Anda menyimpan kunci; Anda tidak dapat mengambilnya nanti.
Untuk membuat pasangan kunci P384 EC baru dengan OpenSSL (Anda mungkin harus menginstal OpenSSL terlebih
openssl ecparam -name secp384r1 -genkey -noout -out priv.pem openssl ec -in priv.pem -pubout -out public.pem
Sekarang impor kunci publik baru Anda, menggunakan instruksi di bawah ini.
Impor Kunci Publik
Setelah Anda memiliki pasangan kunci, Anda dapat mengimpor kunci publik ke IVS. Kunci pribadi tidak diperlukan oleh sistem kami tetapi digunakan oleh Anda untuk menandatangani token.
Untuk mengimpor kunci publik yang ada dengan konsol:
-
Buka konsol https://console.aws.amazon.com/ivs
Amazon IVS. Pilih wilayah panggung Anda jika Anda belum berada di sana. -
Di menu navigasi kiri, pilih Real-time streaming > Tombol publik.
-
Pilih Impor. Dialog Impor kunci publik muncul.
-
Ikuti petunjuk dan pilih Impor.
-
Amazon IVS mengimpor kunci publik Anda dan menghasilkan sumber daya kunci publik.
Untuk mengimpor kunci publik yang ada dengan CLI:
aws ivs-realtime import-public-key --public-key-material "`cat public.pem`" --region <aws-region>
Anda dapat menghilangkan --region <aws-region> jika wilayah tersebut ada di file konfigurasi AWS lokal Anda.
Berikut adalah contoh respons :
{ "publicKey": { "arn": "arn:aws:ivs:us-west-2:123456789012:public-key/f99cde61-c2b0-4df3-8941-ca7d38acca1a", "fingerprint": "98:0d:1a:a0:19:96:1e:ea:0a:0a:2c:9a:42:19:2b:e7", "publicKeyMaterial": "-----BEGIN PUBLIC KEY-----\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEVjYMV+P4ML6xemanCrtse/FDwsNnpYmS\nS6vRV9Wx37mjwi02hObKuCJqpj7x0lpz0bHm5v1JBvdZYAd/r2LR5aChK+/GM2Wj\nl8MG9NJIVFaw1u3bvjEjzTASSfS1BDX1\n-----END PUBLIC KEY-----\n", "tags": {} } }
Permintaan API
POST /ImportPublicKey HTTP/1.1 { "publicKeyMaterial": "<pem file contents>" }
Hasilkan dan Tanda Tanda Tanda Tanda Token
Untuk detail tentang bekerja dengan JWT dan pustaka yang didukung untuk menandatangani token, kunjungi jwt.io.
Semua JWT memiliki tiga bidang: header, payload, dan signature.
Skema JSON untuk header dan payload JWT dijelaskan di bawah ini. Atau Anda dapat menyalin contoh JSON dari konsol IVS. Untuk mendapatkan header dan payload JSON dari konsol IVS:
-
Buka konsol https://console.aws.amazon.com/ivs
Amazon IVS. Pilih wilayah panggung Anda jika Anda belum berada di sana. -
Di menu navigasi kiri, pilih Real-time streaming > Tahapan.
-
Pilih panggung yang ingin Anda gunakan. Pilih Lihat detail.
-
Di bagian Token peserta, pilih drop-down di sebelah Buat token.
-
Pilih Build token header dan payload.
-
Isi formulir dan salin header JWT dan payload yang ditampilkan di bagian bawah popup.
Skema Token: Header
Header menentukan:
-
algadalah algoritma penandatanganan. Ini adalah ES384, algoritma tanda tangan ECDSA yang menggunakan algoritma hash. SHA-384 -
typadalah jenis token, JWT. -
kidadalah ARN dari kunci publik yang digunakan untuk menandatangani token. Itu harus ARN yang sama yang dikembalikan dari permintaan GetPublicKey API.
{ "alg": "ES384", "typ": "JWT" “kid”: “arn:aws:ivs:123456789012:us-east-1:public-key/abcdefg12345” }
Skema Token: Payload
Payload berisi data khusus untuk IVS. Semua bidang kecuali user_id wajib.
-
RegisteredClaimsdalam spesifikasi JWT adalah klaim cadangan yang perlu disediakan agar token tahap valid:-
exp(waktu kedaluwarsa) adalah stempel waktu Unix UTC untuk saat token kedaluwarsa. (Stempel waktu Unix adalah nilai numerik yang mewakili jumlah detik dari 1970-01-01 T00:00:00Z UTC hingga UTC yang ditentukan date/time, mengabaikan detik kabisat.) Token divalidasi saat peserta bergabung dengan panggung. IVS menyediakan token dengan TTL default 12 jam, yang kami rekomendasikan; ini dapat diperpanjang hingga maksimum 14 hari sejak diterbitkan pada waktu (iat). Ini harus berupa nilai tipe integer. -
iat(dikeluarkan pada waktu) adalah stempel waktu Unix UTC untuk saat JWT dikeluarkan. (Lihat catatan untukexptentang stempel waktu Unix.) Itu harus berupa nilai tipe integer. -
jti(ID JWT) adalah ID peserta yang digunakan untuk melacak dan merujuk pada peserta yang diberikan token. Setiap token harus memiliki ID peserta yang unik. Ini harus berupa string peka huruf besar-kecil, hingga 64 karakter, yang hanya berisi karakter alfanumerik, tanda hubung (-), dan garis bawah (_). Tidak ada karakter khusus lainnya yang diizinkan.
-
-
user_idadalah nama opsional yang ditetapkan pelanggan untuk membantu mengidentifikasi token; ini dapat digunakan untuk menautkan peserta ke pengguna di sistem pelanggan sendiri. Ini harus cocok denganuserIdbidang dalam permintaan CreateParticipantToken API. Ini bisa berupa teks yang UTF-8 dikodekan dan merupakan string hingga 128 karakter. Bidang ini terbuka untuk semua peserta panggung dan tidak boleh digunakan untuk mengidentifikasi pribadi, rahasia, atau informasi sensitif. -
resourceadalah ARN panggung; misalnya,arn:aws:ivs:us-east-1:123456789012:stage/oRmLNwuCeMlQ. -
topicadalah ID panggung, yang dapat diekstraksi dari tahap ARN. Misalnya, jika ARN tahap adalaharn:aws:ivs:us-east-1:123456789012:stage/oRmLNwuCeMlQ, ID tahap adalahoRmLNwuCeMlQ. -
events_urlharus menjadi titik akhir peristiwa yang dikembalikan dari GetStage operasi CreateStage atau. Sebaiknya simpan nilai ini dalam cache pada waktu pembuatan tahap; nilainya dapat di-cache hingga 14 hari. Contoh nilai adalahwss://global.events.live-video.net. -
whip_urlharus menjadi titik akhir WHIP yang dikembalikan dari GetStage operasi CreateStage atau. Sebaiknya simpan nilai ini dalam cache pada waktu pembuatan tahap; nilainya dapat di-cache hingga 14 hari. Contoh nilai adalahhttps://453fdfd2ad24df.global-bm.whip.live-video.net. -
capabilitiesmenentukan kemampuan token; nilai yang valid adalahallow_publishdanallow_subscribe. Untuk token khusus berlangganan, setel hanyaallow_subscribeke.true -
attributesadalah bidang opsional tempat Anda dapat menentukan atribut yang disediakan aplikasi untuk dikodekan ke dalam token dan melampirkan ke panggung. Kunci dan nilai peta dapat berisi teks yang UTF-8 dikodekan. Panjang maksimum bidang ini adalah total 1 KB. Bidang ini terbuka untuk semua peserta panggung dan tidak boleh digunakan untuk mengidentifikasi pribadi, rahasia, atau informasi sensitif. -
versionharus begitu1.0.{ "exp": 1697322063, "iat": 1697149263, "jti": "Mx6clRRHODPy", "user_id": "<optional_customer_assigned_name>", "resource": "<stage_arn>", "topic": "<stage_id>", "events_url": "wss://global.events.live-video.net", "whip_url": "https://114ddfabadaf.global-bm.whip.live-video.net", "capabilities": { "allow_publish": true, "allow_subscribe": true }, "attributes": { "optional_field_1": "abcd1234", "optional_field_2": "false" }, "version": "1.0" }
Skema Token: Tanda Tangan
Untuk membuat tanda tangan, gunakan kunci pribadi dengan algoritma yang ditentukan dalam header (ES384) untuk menandatangani header yang dikodekan dan payload yang dikodekan.
ECDSASHA384( base64UrlEncode(header) + "." + base64UrlEncode(payload), <private-key> )
Petunjuk
-
Hasilkan tanda tangan token dengan algoritma penandatanganan ES384 dan kunci pribadi yang terkait dengan kunci publik yang disediakan untuk IVS.
-
Merakit token.
base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + base64UrlEncode(signature)
Membuat Token dengan IVS Real-Time Streaming API
Seperti yang ditunjukkan di atas, aplikasi klien meminta aplikasi server Anda untuk token, dan aplikasi server memanggil CreateParticipantToken menggunakan permintaan yang ditandatangani AWS SDK atau SIGv4. Karena AWS kredenSIAL digunakan untuk memanggil API, token harus dibuat dalam aplikasi sisi server yang aman, bukan aplikasi sisi klien.
Saat membuat token peserta, Anda dapat secara opsional menentukan and/or kemampuan atribut:
-
Anda dapat menentukan atribut yang disediakan aplikasi untuk dikodekan ke dalam token dan melampirkan ke panggung. Kunci dan nilai peta dapat berisi teks yang UTF-8 dikodekan. Panjang maksimum bidang ini adalah total 1 KB. Bidang ini terbuka untuk semua peserta panggung dan tidak boleh digunakan untuk mengidentifikasi pribadi, rahasia, atau informasi sensitif.
-
Anda dapat menentukan kemampuan yang diaktifkan oleh token. Standarnya adalah
PUBLISHdanSUBSCRIBE, yang memungkinkan peserta mengirim dan menerima audio dan video, tetapi Anda dapat mengeluarkan token dengan subset kemampuan. Misalnya, Anda dapat mengeluarkan token dengan hanyaSUBSCRIBEkemampuan untuk moderator. Dalam hal ini, moderator dapat melihat peserta yang mengirim video tetapi tidak mengirim video mereka sendiri.
Lihat perinciannya di CreateParticipantToken.
Anda dapat membuat token peserta melalui konsol atau CLI untuk pengujian dan pengembangan, tetapi kemungkinan besar Anda ingin membuatnya dengan AWS SDK di lingkungan produksi Anda.
Anda akan memerlukan cara untuk mendistribusikan token dari server Anda ke setiap klien (misalnya, melalui permintaan API). Kami tidak menyediakan fungsi ini. Untuk panduan ini, Anda cukup menyalin dan menempelkan token ke kode klien dalam langkah-langkah berikut.
Penting: Perlakukan token sebagai buram; yaitu, jangan membangun fungsionalitas berdasarkan konten token. Format token bisa berubah di masa depan.
Instruksi Konsol
-
Arahkan ke tahap yang Anda buat di langkah sebelumnya.
-
Pilih Buat token. Jen dela Buat token muncul.
-
Masukkan ID pengguna yang akan dikaitkan dengan token. Ini bisa berupa teks yang UTF-8 dikodekan.
-
Pilih Buat.
-
Salin token. Penting: Pastikan untuk menyimpan token; IVS tidak menyimpannya dan Anda tidak dapat mengambilnya nanti.
Instruksi CLI
Membuat token dengan AWS CLI mengharuskan Anda mengunduh dan mengonfigurasi CLI terlebih dahulu di mesin Anda. Untuk detail, lihat Panduan Pengguna AWS Command Line Interface. Perhatikan bahwa menghasilkan token dengan AWS CLI bagus untuk tujuan pengujian, tetapi untuk penggunaan produksi, kami menyarankan Anda membuat token di sisi server dengan AWS SDK (lihat petunjuk di bawah).
-
Jalankan
create-participant-tokenperintah dengan panggung ARN. Sertakan salah satu atau semua kemampuan berikut:"PUBLISH","SUBSCRIBE".aws ivs-realtime create-participant-token --stage-arn arn:aws:ivs:us-west-2:376666121854:stage/VSWjvX5XOkU3 --capabilities '["PUBLISH", "SUBSCRIBE"]' -
Ini mengembalikan token peserta:
{ "participantToken": { "capabilities": [ "PUBLISH", "SUBSCRIBE" ], "expirationTime": "2023-06-03T07:04:31+00:00", "participantId": "tU06DT5jCJeb", "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2NjE1NDE0MjAsImp0aSI6ImpGcFdtdmVFTm9sUyIsInJlc291cmNlIjoiYXJuOmF3czppdnM6dXMtd2VzdC0yOjM3NjY2NjEyMTg1NDpzdGFnZS9NbzhPUWJ0RGpSIiwiZXZlbnRzX3VybCI6IndzczovL3VzLXdlc3QtMi5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vNjZmNzY1YWM4Mzc3Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiY2FwYWJpbGl0aWVzIjp7ImFsbG93X3B1Ymxpc2giOnRydWUsImFsbG93X3N1YnNjcmliZSI6dHJ1ZX19.MGQCMGm9affqE3B2MAb_DSpEm0XEv25hfNNhYn5Um4U37FTpmdc3QzQKTKGF90swHqVrDgIwcHHHIDY3c9eanHyQmcKskR1hobD0Q9QK_GQETMQS54S-TaKjllW9Qac6c5xBrdAk" } } -
Simpan token ini. Anda akan membutuhkan ini untuk bergabung dengan panggung dan mengirim dan menerima video.
AWS Petunjuk SDK
Anda dapat menggunakan AWS SDK untuk membuat token. Di bawah ini adalah petunjuk AWS penggunaan SDK JavaScript.
Penting: Kode ini harus dijalankan di sisi server dan output-nya diberikan kepada klien.
Prasyarat: Untuk menggunakan contoh kode di bawah ini, Anda perlu menginstal paket aws- sdk/client -ivs-realtime. Untuk detailnya, lihat Mem ulai dengan AWS SDK untuk JavaScript.
import { IVSRealTimeClient, CreateParticipantTokenCommand } from "@aws-sdk/client-ivs-realtime"; const ivsRealtimeClient = new IVSRealTimeClient({ region: 'us-west-2' }); const stageArn = 'arn:aws:ivs:us-west-2:123456789012:stage/L210UYabcdef'; const createStageTokenRequest = new CreateParticipantTokenCommand({ stageArn, }); const response = await ivsRealtimeClient.send(createStageTokenRequest); console.log('token', response.participantToken.token);