Fitur Penandatanganan URL melindungi resource situs Anda dari pengunduhan dan penggunaan yang tidak sah. Alibaba Cloud CDN menyediakan empat metode penandatanganan. Topik ini menjelaskan prinsip signing tipe C dan memberikan contohnya.
Cara kerja
Struktur URL yang ditandatangani untuk signing tipe C
Format 1
http://DomainName/{<md5hash>/<timestamp>}/FileNameFormat 2
http://DomainName/FileName?{KEY1=<md5hash>&KEY2=<timestamp>}
CatatanKonten dalam
{}adalah informasi terenkripsi yang ditambahkan ke URL standar.Deskripsi bidang
Bidang
Deskripsi
DomainName
Nama domain situs CDN Anda.
PrivateKey
Kunci enkripsi kustom. Panjangnya harus antara 16 hingga 32 karakter dan dapat berisi huruf kapital, huruf kecil, serta angka.
FileName
URL untuk pengambilan asal 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. Nilainya berupa bilangan desimal positif 10 digit dan tidak bergantung pada zona waktu. Timestamp 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 resource, server tersebut memeriksa apakah
timestamp+periode validitas URL yang ditandatanganilebih awal daripada waktu saat ini.Jika
timestamp+periode validitas URL yang ditandatanganilebih awal daripada waktu saat ini, server menentukan bahwa URL telah kedaluwarsa dan mengembalikan error HTTP 403.Jika
timestamp+periode validitas URL yang ditandatanganitidak lebih awal daripada waktu saat ini, server menyusun string dalam formatsstring. Untuk informasi cara menyusunsstring, lihat tabel. Server kemudian menggunakan algoritma MD5 untuk menghitung nilaimd5hash. Terakhir, server membandingkan nilaimd5hashyang dihitung dengan nilaimd5hashdalam permintaan pengguna.Jika nilainya sesuai, otentikasi berhasil dan resource dikembalikan.
CatatanSaat otentikasi berhasil, parameter penandatanganan dihapus dari URL agar kembali ke bentuk URL aslinya. Hal ini meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal. Contohnya:
Format URL dengan parameter penandatanganan:
http://DomainName/FileName?{KEY1=<md5hash>&KEY2=<timestamp>}Setelah otentikasi berhasil:
Format URL yang digunakan untuk menghasilkan kunci cache:
http://DomainName/FileNameFormat URL untuk pengambilan asal yang sebenarnya:
http://DomainName/FileName
Jika nilainya tidak sesuai, otentikasi gagal dan error HTTP 403 dikembalikan.
Contoh URL yang ditandatangani
Contoh berikut menunjukkan cara implementasi signing tipe C.
Kondisi contoh
Permintaan origin:
http://domain.example.com/test.flvCatatanJika URL permintaan berisi 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 Stitching
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 1:
http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flvFormat 2:
http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
Ketika klien melakukan permintaan menggunakan URL yang ditandatangani, server CDN menghitung nilai md5hash miliknya sendiri. Jika nilai yang dihitung sesuai dengan nilai md5hash dalam permintaan, yaitu a37fa50a5fb8f71214b1e7c95ec7a1bd, dan URL yang ditandatangani belum kedaluwarsa, otentikasi berhasil. Jika tidak, otentikasi gagal.