Panduan ini menjelaskan cara membuat token, serta kolom wajib dan opsional untuk token.
Untuk membuat token, Anda harus membuat string yang akan ditandatangani, yang kami sebut sebagai nilai yang ditandatangani dalam panduan ini. Nilai yang ditandatangani mencakup parameter yang mendeskripsikan 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 kode autentikasi pesan berbasis hash kunci simetris (HMAC) dari nilai yang ditandatangani.
Media CDN menggunakan token gabungan akhir 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 tilde
~
.Tanda tangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Buat token dengan menggabungkan string yang berisi kolom token wajib dan kolom token opsional. Pisahkan setiap kolom dan parameter apa pun dengan karakter tilde
~
.Saat menyusun token, nilai untuk setiap parameter 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 berikut ini:
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 |
---|---|---|
|
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 yang akan diberi akses. Segmen
dapat dipisahkan dengan koma (
Parameter jalur, yang ditunjukkan menggunakan titik koma ( Oleh karena itu, pastikan URL Anda tidak berisi karakter khusus
berikut: |
PathGlobs=PATHS |
URLPrefix |
URL yang dienkode base64 dan aman 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 yang dienkode dalam base64 yang sesuai untuk web. | Tidak berlaku |
hmac |
Versi nilai HMAC yang dienkode dalam 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 karakter atau lebih di jalur URL, termasuk
karakter garis miring (/ ).
|
|
? (tanda tanya) |
Mencocokkan satu karakter dalam
jalur URL, tidak termasuk karakter garis miring (/ ).
|
/videos/s?main.m3u8 cocok dengan
/videos/s1main.m3u8 . Nilai 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 salah satu di token yang ditandatangani. 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 yang valid untuk URL ini dalam format base64 yang aman untuk web. Misalnya,
untuk menentukan rentang IP "192.6.13.13/32,193.5.64.135/32", Anda menentukan
IPRanges mungkin tidak membantu untuk disertakan dalam token jika klien
berisiko mengalami migrasi WAN atau kasus saat jalur jaringan ke
frontend aplikasi Anda berbeda dengan jalur pengiriman.
Media CDN menolak klien dengan kode Berikut adalah kasus yang dapat menyebabkan Media CDN menolak klien dengan kode
Semua faktor ini dapat berkontribusi pada klien tertentu yang memiliki alamat IP non-deterministik selama sesi pemutaran video. Jika alamat IP klien berubah setelah Anda memberikan akses, dan klien mencoba mendownload segmen video ke buffering pemutaran, klien 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 yang dienkode % atau dienkode base64 yang 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 yang dienkode % atau dienkode base64 yang 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 penggunaan FullPath
Perhatikan contoh berikut yang 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, 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 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.
Pada contoh sebelumnya, FullPath
disediakan 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 penggunaan URLPrefix
Perhatikan contoh berikut yang 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
Pada 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 web-safe,
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 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 penggunaan Headers
Perhatikan contoh berikut yang 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: 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 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.
Pada contoh sebelumnya, Headers=user-agent,accept
disediakan dalam token,
tetapi nilai header yang diharapkan tidak diulang dari nilai yang ditandatangani. Dengan demikian,
Anda dapat menandatangani key-value pair header permintaan tertentu tanpa menduplikasi nilai
dalam token.