Fitur Penandatanganan URL melindungi resource pada server origin Anda dari unduhan dan akses yang tidak sah. Alibaba Cloud CDN dan menyediakan empat tipe penandatanganan URL. Topik ini menjelaskan prinsip penandatanganan tipe F dan memberikan contohnya.
Prinsip
Struktur URL yang ditandatangani Tipe F
Format URL akses:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}Catatan{}merepresentasikan informasi terenkripsi yang ditambahkan ke URL standar.URL akses tidak boleh mengandung karakter Tionghoa.
Penandatanganan URL tidak didukung untuk URL yang mengandung tanda tanya (
?).Parameter
signdantimedalam contoh merupakan parameter sistem default. Anda dapat menyesuaikan Signature Parameter dan Timestamp Parameter di Konsol Configure URL Signing.
Field
Description
DomainName
Nama domain situs Alibaba Cloud CDN.
PrivateKey
Kunci enkripsi yang ditentukan pengguna, terdiri dari 16 hingga 32 karakter (huruf besar, huruf kecil, dan angka).
FileName
URL permintaan asal yang sebenarnya. Selama otentikasi, FileName harus diawali dengan
/.timestamp
Waktu ketika server penandatanganan menghasilkan URL yang ditandatangani. Nilai ini, bersama dengan validity period of the signed URL, mengontrol waktu kedaluwarsa URL tersebut. Timestamp menggunakan Unix timestamp dari server penandatanganan (Unix timestamp adalah jumlah total detik sejak UTC 1970-01-01 00:00:00 hingga saat ini, berupa bilangan desimal 10 digit yang tidak bergantung pada zona waktu). Di Konsol Configure URL Signing, atur Timestamp Format menjadi Decimal (Unix Timestamp) atau Hexadecimal (Unix Timestamp).
CatatanAtur TTL di Konsol Configure URL Signing. Setelah konfigurasi selesai, waktu kedaluwarsa URL yang ditandatangani adalah
timestamp+ periode validitas yang dikonfigurasi untuk CDN.md5hash
String yang dihitung menggunakan algoritma MD5, terdiri dari angka 0–9 dan huruf kecil a–z, dengan panjang tetap 32 karakter.
md5hashdihitung menggunakan string berikut.sstring = "Privatekey+URI+timestamp" // URI adalah alamat relatif objek yang diminta pengguna, tanpa parameter, misalnya /Filename md5hash = md5sum(sstring)Logika otentikasi
Ketika server Alibaba Cloud CDN atau menerima permintaan akses ke suatu resource, server tersebut memeriksa apakah nilai
timestampditambahperiode validitaslebih kecil dari waktu saat ini.Jika nilai
timestampditambahperiode validitaslebih kecil dari waktu saat ini, server menentukan bahwa URL telah kedaluwarsa dan mengembalikan error HTTP 403.Jika
timestamp+periode validitas URL yang ditandatanganilebih besar dari waktu saat ini, server akan membuat string menggunakan metodesstring(untuk informasi selengkapnya, lihat metode pembuatansstringdalam tabel). Kemudian, gunakan algoritma MD5 untuk menghitung nilaimd5hash. Bandingkan nilaimd5hashyang dihitung dengan nilaimd5hashyang disertakan dalam permintaan akses pengguna.Jika nilainya sesuai, otentikasi berhasil dan resource yang diminta dikembalikan.
CatatanSetelah otentikasi berhasil, parameter otentikasi dihapus dari URL, dan URL kembali ke format aslinya. Proses ini meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal. Contohnya:
URL dengan parameter otentikasi:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}Setelah otentikasi berhasil:
URL yang digunakan untuk menghasilkan kunci cache:
http://DomainName/FileNameURL yang digunakan untuk pengambilan asal:
http://DomainName/FileName
Jika nilainya tidak sesuai, otentikasi gagal, dan server mengembalikan error HTTP 403.
Contoh URL yang ditandatangani
Contoh berikut menunjukkan cara kerja penandatanganan URL tipe F.
Kondisi contoh
Permintaan asal:
http://domain.example.com/test.flvCatatanJika URL permintaan mengandung karakter Tionghoa atau karakter non-ASCII lainnya, Anda harus terlebih dahulu encode URL tersebut. Kemudian, gunakan URL yang telah di-encode untuk membuat string yang akan di-hash. Contohnya:
URL asli:
https://example.com/image/AlibabaCloud.jpgURL yang di-encode:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Nilai PrivateKey:
aliyuncdnexp1234.Nilai timestamp:
55CE8100.
Proses penggabungan
Server CDN membuat string yang akan di-hash untuk menghitung nilai
md5hash.aliyuncdnexp1234/test.flv55CE8100Berdasarkan string ini, server CDN menghitung nilai
md5hash.md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bdBuat URL yang ditandatangani.
Format URL yang ditandatangani:
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
Ketika klien menggunakan URL terenkripsi untuk mengakses resource, jika nilai CDN yang dihitung oleh server md5hash dan nilai md5hash dalam permintaan akses sama-sama bernilai a37fa50a5fb8f71214b1e7c95ec7a1bd, serta URL yang ditandatangani masih dalam periode validitasnya, maka otentikasi berhasil. Jika tidak, otentikasi gagal.