Penandatanganan URL melindungi sumber daya server origin Anda dari akses yang tidak sah. CDN Alibaba Cloud menyediakan empat metode penandatanganan URL. Topik ini menjelaskan cara kerja Tipe F dan memberikan contohnya.
Tipe F merupakan metode penandatanganan URL paling sederhana. Metode ini menggunakan MD5 dengan kunci privat serta parameter default sign dan time, sehingga cocok untuk sebagian besar skenario otentikasi dasar.
URL yang ditandatangani tidak boleh mengandung karakter Tionghoa.
Penandatanganan URL tidak mendukung URL yang telah berisi parameter kueri (?), karena URL yang ditandatangani sendiri akan menambahkan parameter kueri.
Cara kerja
Format URL yang Ditandatangani
URL yang ditandatangani menggunakan format berikut:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}CatatanKonten dalam
{}merepresentasikan parameter otentikasi yang ditambahkan ke URL standar.Nama parameter
signdantimemerupakan nilai default. Anda dapat menyesuaikan Signature Parameter dan Timestamp Parameter di Konsol Configure URL signing.Parameter
Deskripsi
DomainName
Nama domain yang dipercepat oleh CDN.
PrivateKey
Kunci kriptografi kustom berisi 16 hingga 32 karakter yang terdiri dari huruf kapital, huruf kecil, dan angka.
FileName
Jalur menuju resource untuk permintaan back-to-origin. Jalur tersebut harus dimulai dengan garis miring maju (
/).timestamp
Waktu saat server penandatanganan menghasilkan URL yang ditandatangani. Nilai ini, dikombinasikan dengan periode validitas, menentukan kapan URL yang ditandatangani kedaluwarsa. Waktu ini merupakan Stempel waktu UNIX — jumlah detik yang telah berlalu sejak pukul 00:00:00 UTC pada 1 Januari 1970. Ini adalah bilangan desimal positif 10 digit dan tidak bergantung pada zona waktu. Di Konsol Configure URL signing, Anda dapat mengatur format stempel waktu menjadi desimal (Stempel waktu UNIX) atau heksadesimal (Stempel waktu UNIX).
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 32 karakter yang dihasilkan oleh algoritma MD5, berisi angka 0–9 dan huruf kecil a–z.
Nilai
md5hashdihasilkan dari string penandatanganan berikut:sstring = "Privatekey+URI+timestamp" (di mana URI adalah jalur relatif objek yang diminta, seperti /Filename, dan tidak mencakup parameter kueri) md5hash = md5sum(sstring)Logika Otentikasi
Saat node edge CDN menerima permintaan untuk sebuah resource, sistem terlebih dahulu memeriksa apakah
timestamp+validity periodtelah lewat.Jika
timestamp+validity periodlebih awal daripada waktu saat ini, permintaan telah kedaluwarsa dan server mengembalikan error HTTP 403.Jika
timestamp+validity periodlebih baru daripada waktu saat ini, server menyusun string penandatanganan dalam formatsstring, menghitung nilai MD5-nya, lalu membandingkan hasil tersebut dengan nilaimd5hashdalam permintaan.Jika nilainya sesuai, otentikasi berhasil dan node edge mengembalikan resource yang diminta.
CatatanSetelah otentikasi berhasil, node edge menghapus parameter otentikasi dari URL. Hal ini meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal. Contohnya:
URL dengan parameter penandatanganan:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}Setelah otentikasi:
URL yang digunakan untuk menghasilkan kunci cache:
http://DomainName/FileNameURL untuk permintaan back-to-origin:
http://DomainName/FileName
Jika nilainya tidak sesuai, otentikasi gagal dan server mengembalikan error HTTP 403.
Contoh
Contoh berikut menunjukkan cara mengimplementasikan penandatanganan URL Tipe F.
Kondisi Contoh
Ambil objek dari server 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 penghashan. Contohnya:
-
URL asli:
https://example.com/image/AlibabaCloud.jpg -
URL yang di-encode:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
-
Tetapkan PrivateKey menjadi
aliyuncdnexp1234.Tetapkan timestamp menjadi
55CE8100.
Proses
Buat string penandatanganan
sstringdalam formatPrivatekey+URI+timestamp.aliyuncdnexp1234/test.flv55CE8100Hitung hash MD5 dari string penandatanganan:
md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bdTambahkan hasil penandatanganan dan timestamp sebagai parameter kueri untuk membentuk URL yang ditandatangani:
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
Saat klien mengakses resource menggunakan URL yang ditandatangani, otentikasi berhasil jika nilai md5hash yang dihitung oleh server CDN sesuai dengan nilai md5hash dalam permintaan — misalnya, a37fa50a5fb8f71214b1e7c95ec7a1bd — dan URL yang ditandatangani belum kedaluwarsa. Jika tidak, otentikasi gagal.