Panduan ini menjelaskan cara membuat token, serta kolom wajib dan opsional untuk token.
Untuk membuat token, Anda menyusun string untuk ditandatangani, yang kami sebut sebagai nilai yang ditandatangani dalam panduan ini. Nilai yang ditandatangani mencakup parameter yang menjelaskan konten yang Anda lindungi, waktu habis masa berlaku nilai yang ditandatangani, dan sebagainya.
Anda menggunakan nilai yang ditandatangani saat membuat string token. Anda membuat string token dengan menyusun parameter untuk token, seperti hash-based message authentication code (HMAC) kunci simetris dari nilai yang ditandatangani.
Media CDN menggunakan token akhir yang disusun untuk membantu melindungi konten Anda.
Membuat token
Buat nilai yang ditandatangani dengan menggabungkan string yang berisi kolom token wajib dan kolom token opsional yang diinginkan. Pisahkan setiap kolom dan parameter dengan karakter tilde
~.Tandatangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau kunci simetris HMAC.
Susun token dengan menggabungkan string yang berisi kolom token wajib dan kolom token opsional. Pisahkan setiap kolom dan parameter dengan karakter tilde
~.Saat menyusun token, nilai untuk setiap parameter sama antara nilai yang ditandatangani dan string token, dengan pengecualian berikut:
FullPathHeaders
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 wajib
Kolom berikut wajib diisi untuk setiap token:
Expires- Salah satu dari yang berikut:
PathGlobsURLPrefixFullPath
- Salah satu dari yang berikut:
Signaturehmac
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 |
|---|---|---|
|
Detik bilangan bulat 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 untuk memberikan akses. Segmen
dapat dibatasi 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 sesuai untuk 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 duplikat
jalur yang Anda tentukan dalam nilai yang ditandatangani. Dalam token, sertakan nama kolom
tanpa =. |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Versi tanda tangan berenkode base64 yang sesuai untuk web. | Tidak berlaku |
hmac |
Versi nilai HMAC berenkode base64 yang sesuai untuk 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. Tidak cocok dengan
/videos/s01main.m3u8 atau /videos/s/main.m3u8.
|
Glob harus dimulai dengan tanda bintang (*) atau garis miring (/)
untuk jalur URL.
Karena * dan /* cocok dengan semua jalur URL, sebaiknya jangan gunakan keduanya di token bertanda tangan Anda. Untuk perlindungan maksimum, pastikan 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 |
|---|---|---|
|
Detik bilangan bulat sejak epoch Unix (1970-01-01T00:00:00Z) | Starts=START_TIME |
IPRanges |
Daftar hingga lima alamat IPv4 dan IPv6 dalam format CIDR untuk
yang URL ini valid dalam format base64 yang sesuai untuk web. Misalnya, untuk menentukan rentang IP "192.6.13.13/32,193.5.64.135/32", Anda menentukan IPRanges mungkin tidak berguna untuk disertakan dalam token jika klien berisiko migrasi WAN atau kasus saat jalur jaringan ke frontend aplikasi Anda berbeda dengan jalur pengiriman.
Media CDN rejects clients with an Berikut adalah kasus yang dapat menyebabkan Media CDN
menolak klien dengan kode
Semua faktor ini dapat menyebabkan klien tertentu memiliki alamat IP non-deterministik selama sesi pemutaran video. Jika alamat IP klien berubah setelah Anda memberikan akses, dan klien kemudian mencoba mendownload segmen video ke dalam buffer pemutarannya, mereka akan menerima |
IPRanges=BASE_64_IP_RANGES |
|
String arbitrer, berguna untuk analisis log atau pelacakan pemutaran pelacakan. Untuk menghindari pembuatan token yang tidak valid, gunakan string berenkode % atau berenkode base64 yang sesuai untuk 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 % atau berenkode base64 yang sesuai untuk web. Karakter berikut tidak boleh digunakan untuk
|
data=DATA_VALUE |
Headers |
Daftar nama kolom header yang dibatasi 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 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
Pertimbangkan contoh berikut menggunakan kolom FullPath:
- Item yang diminta:
http://example.com/tv/my-show/s01/e01/playlist.m3u8 - Waktu habis masa berlaku: 160000000
Nilai yang ditandatangani adalah:
Expires=160000000~FullPath=/tv/my-show/s01/e01/playlist.m3u8
Untuk membuat token, tandatangani 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 dibuat sebelumnya.
HMAC kunci simetris
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dengan HMAC_OF_SIGNED_VALUE adalah HMAC kunci simetris dari nilai yang ditandatangani yang dibuat sebelumnya.
Dalam contoh sebelumnya, FullPath diberikan dalam token, tetapi nilainya tidak diulang dari jalur yang ditentukan dalam nilai yang ditandatangani. Hal ini memungkinkan Anda menandatangani jalur lengkap permintaan tanpa menduplikasi permintaan dalam token.
Contoh menggunakan URLPrefix
Pertimbangkan contoh berikut menggunakan kolom URLPrefix:
- Item yang diminta:
http://example.com/tv/my-show/s01/e01/playlist.m3u8 - Waktu habis masa berlaku: 160000000
Nilai yang ditandatangani adalah:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Dalam contoh sebelumnya, kami mengganti jalur ke item yang diminta, http://example.com/tv/my-show/s01/e01/playlist.m3u8 dengan jalur ke item dalam format Base64 yang sesuai untuk web, aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4.
Untuk membuat token, tandatangani 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 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 yang ditandatangani yang dibuat sebelumnya.
Contoh menggunakan Headers
Pertimbangkan contoh berikut menggunakan kolom Headers:
- Item yang diminta:
http://example.com/tv/my-show/s01/e01/playlist.m3u8 - Waktu habis masa berlaku: 160000000
- Nilai PathGlobs:
* - Header permintaan yang diharapkan:
user-agent: browseraccept: text/html
Nilai yang ditandatangani adalah:
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
Untuk membuat token, tandatangani 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 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 yang ditandatangani yang dibuat sebelumnya.
Dalam 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 pasangan nilai kunci header permintaan tertentu tanpa menduplikasi nilai dalam token.