Panduan ini menjelaskan cara membuat token, serta kolom wajib dan opsional untuk token.
Untuk membuat token, Anda menyusun string yang akan ditandatangani, yang kami sebut sebagai nilai bertanda tangan dalam panduan ini. Nilai bertanda tangan mencakup parameter yang mendeskripsikan konten yang Anda lindungi, waktu habis masa berlaku nilai bertanda tangan, 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 (HMAC) kunci simetris dari nilai yang ditandatangani.
Media CDN menggunakan token yang disusun akhir untuk membantu melindungi konten Anda.
Buat token
Buat nilai bertanda tangan dengan menggabungkan string yang berisi kolom token wajib diisi dan kolom token opsional yang diinginkan. Pisahkan setiap kolom dan parameter dengan karakter tilde
~
.Tandatangani 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 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 melakukan autentikasi ke Media CDN, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk melakukan autentikasi 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 berikut ini:
Signature
hmac
Kecuali jika ditentukan lain, nama parameter dan nilainya peka huruf besar/kecil.
Tabel berikut menjelaskan setiap parameter:
Nama / alias kolom | 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 ( Oleh karena itu, 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 duplikasikan
jalur yang Anda tentukan dalam nilai bertanda tangan. 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 matches
/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 dalam token bertanda tangan Anda. Untuk perlindungan maksimal,
pastikan bahwa glob Anda cocok dengan konten yang ingin Anda beri akses.
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 / alias kolom | 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 URL ini valid untuknya dalam format base64 web-safe. Misalnya,
untuk menentukan rentang IP "192.6.13.13/32,193.5.64.135/32", Anda menentukan
Rentang IP mungkin tidak berguna untuk disertakan dalam token saat klien berisiko mengalami migrasi WAN atau dalam kasus ketika 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 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 buffer pemutarannya, 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 yang dienkode base64 yang aman untuk web atau dienkode %.
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 string yang dienkode base64 yang aman untuk web atau dienkode %.
base64. 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 kedaluwarsa: 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 bertanda tangan:
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 bertanda tangan yang dibuat sebelumnya.
Dalam contoh sebelumnya, FullPath
diberikan dalam token, tetapi nilai
tidak diulang dari jalur yang ditentukan dalam nilai bertanda tangan. Dengan begitu, Anda dapat
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 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 web-safe,
aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
.
Untuk membuat token, tandatangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Berikut adalah contoh token yang dibuat dari nilai bertanda tangan:
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 bertanda tangan 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 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, tandatangani nilai yang ditandatangani dengan tanda tangan Ed25519 atau HMAC kunci simetris.
Berikut adalah contoh token yang dibuat dari nilai bertanda tangan:
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 bertanda tangan yang dibuat sebelumnya.
Dalam contoh sebelumnya, Headers=user-agent,accept
diberikan 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.