Alibaba Cloud menyediakan fitur penandatanganan URL untuk melindungi server asal dari unduhan dan akses yang tidak sah. Dynamic Content Delivery Network (DCDN) mendukung empat jenis penandatanganan URL. Topik ini menjelaskan cara kerja penandatanganan tipe B.
Cara Kerjanya
Cara sebuah URL ditandatangani berdasarkan penandatanganan tipe B
http://NamaDomain/{<timestamp>/<md5hash>}/NamaFileCatatanKonten dalam kurung kurawal (
{}) menunjukkan informasi terenkripsi yang ditambahkan ke URL standar.Bidang dalam URL yang Ditandatangani
Bidang
Deskripsi
NamaDomain
Nama domain yang dipercepat.
timestamp
Waktu ketika URL yang ditandatangani dibuat. Timestamp dan nilai TTL menentukan kapan URL yang ditandatangani kedaluwarsa. Waktu dalam UTC+8 dan mengikuti format yyyyMMddHHmm.
CatatanDalam sebagian besar kasus, periode validitas URL yang ditandatangani sama dengan nilai parameter TTL. Dalam beberapa kasus, server penandatanganan juga memberikan nilai TTL pada URL yang ditandatangani. Timestamp = UNIX timestamp + TTL. Periode validitas URL yang ditandatangani = Timestamp + TTL yang dikonfigurasikan pada DCDN.
md5hash
String yang dihitung menggunakan algoritma MD5. String tersebut harus memiliki panjang 32 karakter, dan dapat berisi angka serta huruf kecil.
Nilai
md5hashdihitung menggunakan metode berikut:sstring = "Privatekey+timestamp+Path" (Path menentukan alamat yang menunjuk ke sumber daya yang diminta. Path tidak mencakup parameter seperti /NamaFile.) md5hash = md5sum(sstring)NamaFile
Alamat sebenarnya yang menunjuk ke sumber daya yang diminta di server asal. Nilai bidang NamaFile harus dimulai dengan garis miring (
/).Logika Otentikasi
Ketika Point of Presence (POP) menerima permintaan, POP memeriksa apakah waktu yang dihitung dengan menambahkan nilai
timestampdanTTLdalam permintaan lebih awal dari waktu saat ini.Jika waktu yang dihitung dengan menambahkan nilai
timestampdanTTLdalam permintaan lebih awal daripada waktu saat ini, POP akan menentukan bahwa URL permintaan telah kedaluwarsa dan mengembalikan kesalahan 403.Jika waktu yang dihitung dengan menambahkan nilai
timestampdanTTLdalam permintaan lebih lambat daripada waktu saat ini, sebuahstringakan dihasilkan. Selanjutnya, nilaimd5hashdihasilkan menggunakan algoritma MD5. Nilaimd5hashyang dihasilkan kemudian dibandingkan dengan nilaimd5hashdalam permintaan.Jika nilainya sama, permintaan lolos otentikasi. POP mengembalikan sumber daya yang diminta.
CatatanJika permintaan lolos otentikasi, parameter penandatanganan URL dihapus dari URL untuk meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal.
Format URL yang digunakan untuk menghasilkan kunci cache adalah
http://NamaDomain/NamaFile.Format URL dalam permintaan asal adalah
http://NamaDomain/NamaFile.
Jika kedua nilai berbeda, permintaan gagal otentikasi. POP mengembalikan kode status HTTP 403.
Contoh
Contoh berikut menunjukkan implementasi penandatanganan tipe B.
Kondisi sampel
Mengambil objek dari server asal:
http://domain.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3CatatanJika URL objek yang diminta berisi karakter Cina, Anda perlu mengkodekan URL sebelum menggabungkan URL yang ditandatangani.
URL Asli:
https://example.com/image/阿里云.jpgURL Terkode:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Situs web yang dipercepat oleh CDN (
NamaDomain):domain.example.com.Waktu (
timestamp):201508150800.Kunci pribadi (
Privatekey):aliyuncdnexp1234.Alamat relatif yang diminta pengguna (
Path):/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.Alamat sebenarnya yang menunjuk ke sumber daya yang diminta di server asal (
NamaFile):/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.
Prosedur Penggabungan
Hasilkan string tanda tangan.
// 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://NamaDomain/{<timestamp>/<md5hash>}/NamaFile http://domain.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
Jika klien menggunakan URL yang ditandatangani untuk meminta sumber daya, POP membandingkan nilai md5hash yang dihitung dengan nilai md5hash dalam permintaan. Jika nilainya sama, seperti 9044548ef1527deadafa49a890a377f0, dan URL yang ditandatangani berada dalam periode validitas, permintaan lolos otentikasi. Jika tidak, otentikasi gagal.