Panduan ini menjelaskan cara membuat token, serta kolom wajib diisi dan opsional untuk token.
Untuk membuat token, tulis string yang akan ditandatangani, yang kami sebut sebagai nilai bertanda tangan dalam panduan ini. Nilai yang ditandatangani mencakup parameter yang mendeskripsikan konten yang Anda lindungi, waktu habis masa berlaku nilai yang ditandatangani, dan seterusnya.
Anda menggunakan nilai yang ditandatangani saat membuat string token. Anda membuat string token dengan menyusun parameter untuk token, seperti kode autentikasi pesan berbasis hash (HMAC) simetris dari nilai yang ditandatangani.
Media CDN menggunakan token akhir yang telah disusun untuk membantu melindungi konten Anda.
Buat token
Buat nilai yang ditandatangani dengan menggabungkan string yang berisi kolom token wajib dan kolom token opsional yang diinginkan. Pisahkan setiap kolom dan parameter apa pun dengan karakter
~
tanda gelombang.Tanda tangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Tulis token dengan menggabungkan string yang berisi kolom token yang diperlukan dan kolom token opsional. Pisahkan setiap kolom dan parameter apa pun dengan karakter
~
tanda gelombang.Saat menulis token, nilai untuk setiap parameter adalah sama antara nilai yang ditandatangani dan string token, dengan pengecualian berikut:
FullPath
Headers
Contoh kode berikut menunjukkan cara membuat token secara terprogram:
Python
Untuk mengautentikasi ke Media CDN, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mengautentikasi ke Media CDN, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Bagian berikut menjelaskan kolom yang digunakan oleh token.
Kolom token yang wajib diisi
Kolom berikut wajib diisi untuk setiap token:
Expires
- Salah satu dari opsi berikut:
PathGlobs
URLPrefix
FullPath
- Salah satu dari hal berikut:
Signature
hmac
Kecuali jika ditentukan lain, nama parameter dan nilainya peka huruf besar/kecil.
Tabel berikut menjelaskan setiap parameter:
Nama kolom / alias | Parameter token | Nilai yang ditandatangani |
---|---|---|
|
Bilangan bulat detik yang telah berlalu sejak epoch Unix (1970-01-01T00:00:00Z) | Expires=EXPIRATION_TIME , setelah itu token tidak lagi valid. |
|
Daftar hingga lima segmen jalur yang dapat diakses. Segmen dapat dipisahkan dengan koma (
Parameter jalur, yang ditandai menggunakan titik koma ( Karena alasan ini, pastikan URL Anda tidak berisi karakter khusus berikut: |
PathGlobs=PATHS |
URLPrefix |
URL berenkode base64 yang aman bagi web termasuk protokol
Misalnya, beberapa nilai URLPrefix yang valid untuk `https://example.com/foo/bar.ts` adalah `https://example.com`, `https://example.com/foo`, dan `https://example.com/foo/bar`. |
URLPrefix=BASE_64_URL_PREFIX |
FullPath |
Tidak ada. Saat menentukan FullPath dalam token, jangan menduplikasi
jalur yang Anda tentukan dalam nilai yang ditandatangani. Dalam token, sertakan nama kolom tanpa = . |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Versi tanda tangan yang dienkode dengan base64 yang aman bagi web. | Tidak berlaku |
hmac |
Versi nilai HMAC berenkode base64 yang aman bagi web. | Tidak berlaku |
Sintaksis karakter pengganti PathGlobs
Tabel berikut menjelaskan sintaksis karakter pengganti PathGlobs
.
Operator | Mencocokkan dengan | Contoh |
---|---|---|
* (tanda bintang) |
Mencocokkan nol atau beberapa karakter di jalur URL, termasuk karakter garis miring (/ ).
|
|
? (tanda tanya) |
Mencocokkan satu karakter di jalur URL, tidak termasuk karakter garis miring (/ ).
|
/videos/s?main.m3u8 cocok dengan
/videos/s1main.m3u8 . Parameter ini tidak cocok dengan /videos/s01main.m3u8 atau /videos/s/main.m3u8 .
|
Glob harus diawali dengan tanda bintang (*
) atau garis miring (/
)
untuk jalur URL.
Karena *
dan /*
cocok dengan semua jalur URL, sebaiknya jangan gunakan keduanya dalam token yang ditandatangani. Untuk perlindungan maksimal,
pastikan bahwa glob Anda cocok dengan konten yang ingin Anda berikan aksesnya.
Kolom token opsional
Kecuali jika ditentukan lain, nama parameter dan nilainya peka huruf besar/kecil.
Tabel berikut menjelaskan nama parameter, alias, dan detail untuk parameter opsional:
Nama kolom / alias | Parameter | Nilai yang ditandatangani |
---|---|---|
|
Bilangan bulat detik sejak Unix epoch (1970-01-01T00:00:00Z) | Starts=START_TIME |
IPRanges |
Daftar hingga lima alamat IPv4 dan IPv6 dalam format CIDR yang URL ini valid dalam format base64 yang aman bagi web. Misalnya, untuk menentukan rentang IP "192.6.13.13/32,193.5.64.135/32", Anda menentukan IPRange mungkin tidak berguna untuk disertakan dalam token ketika klien berisiko mengalami migrasi WAN, atau saat jalur jaringan ke frontend aplikasi Anda berbeda dengan jalur pengiriman.
Media CDN menolak klien yang memiliki kode Berikut adalah kasus yang dapat menyebabkan Media CDN menolak klien dengan kode
Semua faktor ini dapat berkontribusi agar klien tertentu memiliki alamat IP nondeterministik selama sesi pemutaran video. Jika alamat IP klien berubah setelah Anda memberikan akses, dan klien mencoba mendownload segmen video ke buffer pemutaran, mereka akan menerima |
IPRanges=BASE_64_IP_RANGES |
|
String arbitrer, berguna untuk analisis log atau pelacakan pemutaran. Untuk menghindari pembuatan token yang tidak valid, gunakan string berenkode base64 yang dienkode dengan % atau aman bagi web. Karakter berikut tidak boleh digunakan untuk
|
SessionID=SESSION_ID_VALUE |
|
String arbitrer, berguna untuk analisis log. Untuk menghindari pembuatan token yang tidak valid, gunakan string berenkode base64 yang dienkode dengan % atau aman bagi web. Karakter berikut tidak boleh digunakan untuk
|
data=DATA_VALUE |
Headers |
Daftar nama kolom header yang dipisahkan koma. Nama header tidak peka huruf besar/kecil untuk pencarian dalam permintaan. Nama header dalam nilai yang ditandatangani peka huruf besar/kecil. Jika header tidak ada, nilainya adalah string kosong. Jika ada beberapa salinan header, header tersebut akan digabungkan dengan koma. | Headers=HEADER_1_NAME=HEADER_1_EXPECTED_VALUE,
HEADER_2_NAME=HEADER_2_EXPECTED_VALUE |
Contoh
Bagian berikut menunjukkan contoh untuk membuat token.
Contoh menggunakan FullPath
Perhatikan contoh berikut menggunakan kolom FullPath
:
- Item yang diminta:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Waktu kedaluwarsa: 160000000
Nilai yang ditandatangani adalah:
Expires=160000000~FullPath=/tv/my-show/s01/e01/playlist.m3u8
Untuk membuat token, tanda tangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Berikut adalah contoh token yang dibuat dari nilai yang ditandatangani:
Tanda tangan Ed25519
Expires=160000000~FullPath~Signature=SIGNATURE_OF_SIGNED_VALUE
Dengan SIGNATURE_OF_SIGNED_VALUE adalah tanda tangan ED25519 dari nilai bertanda tangan yang dibuat sebelumnya.
HMAC kunci simetris
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dengan HMAC_OF_SIGNED_VALUE adalah HMAC kunci simetris dari nilai bertanda yang dibuat sebelumnya.
Pada contoh sebelumnya, FullPath
disediakan dalam token, tetapi nilainya
tidak diulang dari jalur yang ditentukan dalam nilai yang ditandatangani. Dengan begitu, Anda dapat
menandatangani jalur lengkap permintaan tanpa menduplikasi permintaan dalam token.
Contoh menggunakan URLPrefix
Perhatikan contoh berikut menggunakan kolom URLPrefix
:
- Item yang diminta:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Waktu kedaluwarsa: 160000000
Nilai yang ditandatangani adalah:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Dalam contoh sebelumnya, kita mengganti jalur ke item yang diminta,
http://example.com/tv/my-show/s01/e01/playlist.m3u8
dengan jalur ke item tersebut
dalam format Base64 yang aman bagi web,
aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
.
Untuk membuat token, tanda tangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Berikut adalah contoh token yang dibuat dari nilai yang ditandatangani:
Tanda tangan Ed25519
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~Signature=SIGNATURE_OF_SIGNED_VALUE
Dengan SIGNATURE_OF_SIGNED_VALUE adalah tanda tangan ED25519 dari nilai bertanda tangan yang dibuat sebelumnya.
HMAC kunci simetris
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Dengan HMAC_OF_SIGNED_VALUE adalah HMAC kunci simetris dari nilai bertanda yang dibuat sebelumnya.
Contoh menggunakan Headers
Perhatikan contoh berikut menggunakan kolom Headers
:
- Item yang diminta:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Waktu kedaluwarsa: 160000000
- Nilai PathGlobs:
*
- Header permintaan yang diharapkan:
user-agent: browser
accept: text/html
Nilai yang ditandatangani adalah:
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
Untuk membuat token, tanda tangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Berikut adalah contoh token yang dibuat dari nilai yang ditandatangani:
Tanda tangan Ed25519
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~Signature=SIGNATURE_OF_SIGNED_VALUE
Dengan SIGNATURE_OF_SIGNED_VALUE adalah tanda tangan ED25519 dari nilai bertanda tangan yang dibuat sebelumnya.
HMAC kunci simetris
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
Dengan HMAC_OF_SIGNED_VALUE adalah HMAC kunci simetris dari nilai bertanda yang dibuat sebelumnya.
Pada contoh sebelumnya, Headers=user-agent,accept
disediakan dalam token,
tetapi nilai header yang diharapkan tidak diulang dari nilai yang ditandatangani. Dengan begitu,
Anda dapat menandatangani key-value pair header permintaan tertentu tanpa menduplikasi nilai
dalam token.