Panduan ini menjelaskan cara membuat token, serta aturan wajib dan opsional untuk token.
Untuk membuat token, tulis string untuk ditandatangani, yang kami sebut sebagai ditandatangani nilai dalam panduan ini. Nilai yang ditandatangani mencakup parameter yang mendeskripsikan konten yang dilindungi, waktu habis masa berlaku nilai yang ditandatangani, dan dan seterusnya.
Anda menggunakan nilai yang ditandatangani saat membuat string token. Anda membuat string token dengan menyusun parameter untuk token, seperti kode otentikasi pesan berbasis {i>hash <i} simetris (HMAC) yang ditandatangani dengan sejumlah nilai.
Media CDN menggunakan token akhir yang telah disusun untuk membantu melindungi saat ini.
Buat token
Buat nilai yang ditandatangani dengan menyambungkan string yang berisi kolom token wajib dan token opsional yang diinginkan kolom. Pisahkan setiap bidang dan parameter dengan karakter
~
gelombang.Tanda tangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau kunci simetris HMAC.
Tulis token dengan menggabungkan string yang berisi kolom yang diperlukan token, dan kolom token opsional. Pisahkan setiap kolom dan parameter dengan karakter
~
tanda gelombang.Saat menyusun token, nilai untuk setiap parameter adalah sama antara nilai yang ditandatangani dan string token, dengan pengecualian:
FullPath
Headers
Contoh kode berikut menunjukkan cara membuat token secara terprogram:
Python
Untuk mengautentikasi ke Media CDN, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mengautentikasi ke Media CDN, siapkan Kredensial Default Aplikasi. Untuk 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 ini sudah tidak valid. |
|
Daftar hingga lima segmen jalur yang dapat diakses. Segmen
dapat dipisahkan dengan koma (
Parameter jalur, dilambangkan menggunakan titik koma ( Oleh karena itu, pastikan URL Anda tidak berisi hal-hal berikut
karakter khusus: |
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 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 karakter atau lebih di jalur URL, termasuk
karakter garis miring (/ ).
|
|
? (tanda tanya) |
Cocok dengan satu karakter di
jalur URL, tidak termasuk garis miring (/ )
karakter.
|
/videos/s?main.m3u8 kecocokan
/videos/s1main.m3u8 . Data tersebut tidak sesuai
dengan salah satu
/videos/s01main.m3u8 atau /videos/s/main.m3u8 .
|
Glob harus diawali dengan tanda bintang (*
) atau garis miring (/
)
untuk jalur URL.
Sebaiknya jangan gunakan karena *
dan /*
cocok dengan semua jalur URL
menggunakan keduanya di token yang ditandatangani. Untuk perlindungan maksimal,
pastikan bahwa globs 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 yang berisi hingga lima alamat IPv4 dan IPv6 dalam format CIDR untuk
yang 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 migrasi WAN atau
kasus di mana jalur jaringan ke
frontend aplikasi berbeda dengan jalur pengiriman.
Media CDN menolak klien dengan Berikut adalah kasus yang dapat menyebabkan Media CDN
menolak klien dengan kode
Semua faktor ini dapat berkontribusi
kepada klien tertentu yang memiliki
alamat IP nondeterministik selama sesi pemutaran video. Jika
alamat IP klien berubah setelah Anda mengeluarkan akses, dan
mencoba mendownload segmen video ke dalam pemutaran mereka
buffer, mereka menerima |
IPRanges=BASE_64_IP_RANGES |
|
String arbitrer, berguna untuk analisis log atau pemutaran penelusuran sumber daya. Untuk menghindari pembuatan token yang tidak valid, gunakan %-enkode atau aman untuk web
string berenkode base64. Karakter berikut tidak boleh digunakan untuk
|
SessionID=SESSION_ID_VALUE |
|
String arbitrer, berguna untuk analisis log. Untuk menghindari pembuatan token yang tidak valid, gunakan %-enkode atau aman untuk web
string berenkode base64. Karakter berikut tidak boleh digunakan untuk
|
data=DATA_VALUE |
Headers |
Daftar nama kolom header yang dipisahkan koma. Nama {i>header<i} adalah tidak peka huruf besar/kecil untuk pencarian dalam permintaan. Nama header dalam peka huruf besar/kecil. Jika header tidak ada, nilainya adalah kosong {i>string<i}. Jika ada beberapa salinan {i>header<i}, semua itu yang 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 yang ditandatangani, yang telah dibuat sebelumnya.
HMAC kunci simetris
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dengan HMAC_OF_SIGNED_VALUE adalah HMAC kunci simetris dari nilai sebelumnya yang telah dibuat.
Pada contoh sebelumnya, FullPath
diberikan dalam token, tetapi nilainya
tidak diulang dari jalur yang
ditentukan dalam nilai yang ditandatangani. Hal ini memungkinkan Anda untuk
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
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 yang ditandatangani, yang telah 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 sebelumnya yang telah dibuat.
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 yang ditandatangani, yang telah 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 sebelumnya yang telah dibuat.
Pada contoh sebelumnya, Headers=user-agent,accept
diberikan dalam token,
tetapi nilai header yang diharapkan tidak diulang dari nilai yang ditandatangani. Hal ini memungkinkan
Anda menandatangani key-value pair header permintaan tertentu tanpa menduplikasi nilai
di token.