Fitur Penandatanganan URL melindungi resource di situs Anda dari unduhan dan penggunaan yang tidak sah. Alibaba Cloud CDN menyediakan empat metode penandatanganan. Topik ini menjelaskan prinsip Tipe B penandatanganan dan memberikan contohnya.
Cara kerja
Struktur URL yang ditandatangani untuk Tipe B penandatanganan
http://DomainName/{<timestamp>/<md5hash>}/FileNameCatatanKonten dalam
{}merepresentasikan informasi terenkripsi yang ditambahkan ke URL standar.Bidang autentikasi
Bidang
Deskripsi
DomainName
Nama domain situs CDN Anda.
timestamp
Waktu saat server penandatanganan menghasilkan URL yang ditandatangani. Bidang ini, bersama dengan validity period, mengontrol waktu kedaluwarsa URL yang ditandatangani. Waktu berdasarkan UTC+8 dan formatnya adalah YYYYMMDDHHMM.
CatatanDalam sebagian besar kasus, periode validitas URL yang ditandatangani adalah periode validitas yang dikonfigurasi untuk CDN. Jika Anda memperpanjang periode validitas saat membuat URL yang ditandatangani, `timestamp` = Stempel waktu UNIX + periode perpanjangan. Periode validitas aktual URL yang ditandatangani adalah `timestamp` + periode yang dikonfigurasi untuk CDN.
md5hash
String validasi yang dihitung menggunakan algoritma MD5. Ini adalah string dengan panjang tetap 32 karakter yang terdiri dari angka 0 hingga 9 dan huruf kecil a hingga z.
Nilai
md5hashdihitung dari string berikut.sstring = "Privatekey+timestamp+Path" (Path adalah alamat relatif objek yang diminta, yang tidak mengandung parameter, seperti /Filename) md5hash = md5sum(sstring)Filename
Jalur file yang akan diakses untuk pengambilan asal. Untuk autentikasi, Filename harus diawali dengan
/.Logika autentikasi
Setelah server CDN menerima permintaan akses resource, server tersebut memeriksa apakah jumlah
timestampdanperiode validitaslebih awal daripada waktu saat ini.Jika jumlah
timestampdanperiode validitaslebih awal daripada waktu saat ini, server menentukan bahwa URL telah kedaluwarsa dan mengembalikan error HTTP 403.Jika jumlah
timestampdanperiode validitaslebih baru daripada waktu saat ini, server menyusun string dalam formatsstring. Untuk informasi lebih lanjut tentang format tersebut, lihat formatsstringdalam tabel. Kemudian, server menggunakan algoritma MD5 untuk menghitung nilaimd5hash, lalu membandingkan nilaimd5hashyang dihitung dengan nilaimd5hashdalam permintaan akses.Jika nilainya sesuai, autentikasi berhasil dan resource dikembalikan.
CatatanSaat autentikasi berhasil, parameter autentikasi dihapus dari URL dan URL dikembalikan ke format aslinya. Hal ini meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal. Contohnya:
URL dengan parameter autentikasi:
http://DomainName/{<timestamp>/<md5hash>}/FileNameSetelah autentikasi berhasil:
URL yang digunakan untuk menghasilkan kunci cache:
http://DomainName/FileNameURL yang digunakan untuk pengambilan asal:
http://DomainName/FileName
Jika nilainya tidak sesuai, autentikasi gagal dan error HTTP 403 dikembalikan.
Contoh URL yang ditandatangani
Contoh berikut menunjukkan cara kerja Tipe B penandatanganan.
Kondisi contoh
Objek permintaan asli:
http://domain.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3CatatanJika 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
Nama domain untuk situs CDN (DomainName):
domain.example.com.Stempel waktu (timestamp):
201508150800.Kunci privat (Privatekey):
aliyuncdnexp1234.Jalur relatif permintaan pengguna (Path):
/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.Jalur file yang diakses untuk pengambilan asal (Filename):
/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.
Alur penyambungan
Susun string untuk penghashan:
// sstring="Privatekey+timestamp+Path" sstring=aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3Hitung nilai md5hash:
// md5hash = md5sum(sstring) md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0Hasilkan URL yang ditandatangani:
// Signed URL=http://DomainName/{<timestamp>/<md5hash>}/FileName http://domain.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
Saat klien menggunakan URL yang ditandatangani untuk mengirim permintaan akses, server CDN menghitung nilai md5hash. Jika nilai yang dihitung sesuai dengan nilai md5hash dalam permintaan, yaitu 9044548ef1527deadafa49a890a377f0, dan URL yang ditandatangani belum kedaluwarsa, autentikasi berhasil. Jika tidak, autentikasi gagal.