Penandatanganan URL melindungi resource di situs Anda dari unduhan dan penggunaan yang tidak sah. CDN Alibaba Cloud menyediakan empat jenis penandatanganan URL. Topik ini menjelaskan prinsip tipe penandatanganan F dan memberikan contohnya.
Cara kerja
Struktur URL yang ditandatangani untuk tipe penandatanganan F
Format URL akses:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}CatatanKonten dalam
{}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 (
?).
Deskripsi bidang
Bidang
Deskripsi
DomainName
Nama domain situs CDN Anda.
PrivateKey
Kunci enkripsi kustom. Panjangnya harus 16 hingga 32 karakter dan dapat berisi huruf kapital, huruf kecil, serta angka.
FileName
URL untuk pengambilan asal (origin fetch) yang sebenarnya. Untuk penandatanganan, FileName harus diawali dengan
/.timestamp
Waktu saat server penandatanganan menghasilkan URL yang ditandatangani. Bidang ini, bersama dengan validity period of the signed URL, menentukan kapan URL tersebut kedaluwarsa. Waktu ini merupakan stempel waktu UNIX dari server penandatanganan. Stempel waktu UNIX adalah jumlah detik yang telah berlalu sejak pukul 00:00:00 UTC pada 1 Januari 1970. Ini merupakan bilangan desimal positif 10 digit dan tidak bergantung pada zona waktu. Stempel waktu direpresentasikan dalam format heksadesimal.
CatatanDalam kebanyakan kasus, periode validitas URL yang ditandatangani adalah periode validitas yang dikonfigurasi untuk CDN. Jika Anda memperpanjang periode validitas saat menghasilkan URL yang ditandatangani, `timestamp` = stempel waktu UNIX + periode perpanjangan. Periode validitas aktual URL yang ditandatangani adalah `timestamp` + periode yang dikonfigurasi untuk CDN.
md5hash
String yang dihitung menggunakan algoritma MD5. Ini adalah string tetap sepanjang 32 karakter yang terdiri dari angka 0–9 dan huruf kecil a–z.
Nilai
md5hashdihitung dari string berikut.sstring = "Privatekey+URI+timestamp" (URI adalah alamat relatif objek yang diminta dan tidak mengandung parameter, seperti /Filename) md5hash = md5sum(sstring)Logika otentikasi
Setelah server CDN menerima permintaan akses resource, server tersebut memeriksa apakah
timestamp+periode validitaslebih awal daripada waktu saat ini.Jika
timestamp+periode validitaslebih awal daripada waktu saat ini, server menentukan bahwa URL telah kedaluwarsa dan mengembalikan error HTTP 403.Jika
timestamp+periode validitaslebih akhir daripada waktu saat ini, server menyusun string dalam formatsstring(lihat tabel untuk metode penyusunansstring). Server kemudian menggunakan algoritma MD5 untuk menghitung nilaimd5hashdan membandingkan nilaimd5hashyang dihitung dengan nilaimd5hashdalam permintaan pengguna.Jika nilainya sesuai, otentikasi berhasil dan resource dikembalikan.
CatatanSetelah otentikasi berhasil, parameter penandatanganan dihapus dari URL, dan URL dikembalikan ke format aslinya. Hal ini meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal. Contohnya:
Format URL yang ditandatangani:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}Setelah otentikasi berhasil:
Format URL yang digunakan untuk menghasilkan kunci cache:
http://DomainName/FileNameFormat URL 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 menerapkan tipe penandatanganan F.
Kondisi contoh
Permintaan origin:
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 menyusun string guna penghashan. 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.
Alur Penyambungan
Server CDN menyusun string yang akan di-hash untuk menghitung nilai
md5hash.aliyuncdnexp1234/test.flv55CE8100Berdasarkan string ini, server CDN menghitung nilai
md5hash.md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bdHasilkan URL yang ditandatangani.
Format URL yang ditandatangani:
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
Saat klien menggunakan URL yang ditandatangani untuk mengakses resource, server CDN menghitung nilai md5hash. Jika nilai yang dihitung adalah a37fa50a5fb8f71214b1e7c95ec7a1bd, yang sesuai dengan nilai md5hash dalam permintaan, dan URL belum kedaluwarsa, maka otentikasi berhasil. Jika tidak, otentikasi gagal.