Penandatanganan URL melindungi resource di situs Anda dari unduhan atau penggunaan tidak sah oleh pihak lain. Topik ini menjelaskan cara kerja Tipe A penandatanganan untuk CDN Alibaba Cloud dan menyertakan contoh implementasinya.
Cara kerja
Struktur URL yang ditandatangani tipe A
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}CatatanKonten dalam
{}merepresentasikan informasi terenkripsi yang ditambahkan ke URL standar.Deskripsi bidang
Bidang
Deskripsi
DomainName
Nama domain situs CDN Anda.
Filename
URL untuk pengambilan asal aktual. Filename harus diawali dengan garis miring (
/).auth_key
Informasi otentikasi untuk permintaan. Terdiri dari timestamp, rand, uid, dan md5hash.
timestamp
Waktu saat server penandatanganan menghasilkan URL yang ditandatangani. Nilai ini, bersama dengan Validity Period of Signed URL, mengatur kapan URL yang ditandatangani kedaluwarsa. Waktu ini berupa Stempel waktu UNIX 10 digit, yaitu jumlah detik yang telah berlalu sejak pukul 00:00:00 pada 1 Januari 1970.
CatatanAtur TTL di Konsol Konfigurasi Penandatanganan URL. Setelah konfigurasi selesai, waktu kedaluwarsa URL yang ditandatangani adalah
timestamp+ periode validitas yang dikonfigurasi untuk CDN.rand
Bilangan acak. Gunakan identifier unik universal (UUID) tanpa tanda hubung (-). Contoh: 477b3bbc253f467b8def6711128c7bec.
uid
ID pengguna. Bidang ini tidak digunakan. Atur nilainya ke 0.
md5hash
String 32 karakter yang dihitung menggunakan algoritma MD5. Terdiri dari angka dan huruf kecil.
Metode perhitungan:
sstring = "URI-Timestamp-rand-uid-PrivateKey" (URI adalah path relatif objek yang diminta, seperti /Filename, dan tidak mencakup parameter.) md5hash = md5sum(sstring)Logika otentikasi
Setelah server CDN menerima permintaan untuk mengakses 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 ditandatanganilebih akhir daripada waktu saat ini, server menyusun string dalam formatsstring(lihat formatsstringpada tabel). Kemudian, server menghitung nilaimd5hashmenggunakan algoritma MD5 dan membandingkan nilaimd5hashyang dihitung dengan nilaimd5hashdalam permintaan pengguna.Jika nilai-nilai tersebut sesuai, otentikasi berhasil dan resource dikembalikan.
CatatanSaat otentikasi berhasil, parameter penandatanganan dihapus dari URL sehingga kembali ke bentuk URL aslinya. Hal ini meningkatkan rasio hit cache dan mengurangi lalu lintas kembali ke asal. Contohnya:
URL dengan parameter penandatanganan:
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}Setelah otentikasi berhasil:
Format URL yang digunakan untuk menghasilkan kunci cache:
http://DomainName/FileNameFormat URL untuk pengambilan asal aktual:
http://DomainName/FileName
Jika nilai-nilai tersebut tidak sesuai, otentikasi gagal dan error HTTP 403 dikembalikan.
Contoh URL yang ditandatangani
Contoh berikut menunjukkan implementasi Tipe A penandatanganan.
Kondisi contoh
Objek permintaan origin:
http://domain.example.com/video/standard/test.mp4CatatanJika URL permintaan berisi karakter Tionghoa atau karakter non-ASCII lainnya, Anda harus terlebih dahulu encode URL tersebut. Lalu, 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
Kunci diatur sebagai: aliyuncdnexp1234.
Server penandatanganan menghasilkan URL yang ditandatangani pada pukul 08.00.00 tanggal 10 Oktober 2015 (UTC+8), yang sesuai dengan nilai integer desimal 1444435200.
Proses penggabungan
Server CDN menyusun string yang akan di-hash untuk menghitung
md5hash./video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234Berdasarkan string ini, server CDN menghitung
md5hash.md5hash = md5sum("/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234") = 23bf85053008f5c0e791667a313e28ceHasilkan URL yang ditandatangani.
http://domain.example.com/video/standard/test.mp4?auth_key=1444435200-0-0-23bf85053008f5c0e791667a313e28ce
Saat klien menggunakan URL yang ditandatangani untuk membuat permintaan, jika nilai md5hash yang dihitung oleh server CDN sama dengan nilai md5hash dalam permintaan, yaitu 23bf85053008f5c0e791667a313e28ce, dan URL yang ditandatangani belum kedaluwarsa, otentikasi berhasil. Jika tidak, otentikasi gagal.