Fitur penandatanganan URL digunakan untuk melindungi server asal dari unduhan dan akses yang tidak sah. Dynamic Content Delivery Network (DCDN) mendukung empat jenis penandatanganan URL. Bagian ini menjelaskan cara kerja tipe A penandatanganan.
Cara kerjanya
Cara Penandatanganan URL Berdasarkan Tipe A
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}nullKonten dalam tanda kurung kurawal (
{}) menunjukkan informasi terenkripsi yang ditambahkan ke URL standar.Bidang dalam URL yang Ditandatangani
Bidang
Deskripsi
DomainName
Nama domain yang dipercepat.
Filename
URL sebenarnya yang menunjuk ke sumber daya yang diminta pada server asal. Nilai bidang Filename harus dimulai dengan garis miring (
/).auth_key
Kunci kriptografi yang Anda tentukan.
timestamp
Waktu ketika URL yang ditandatangani dibuat. Timestamp dan nilai TTL menentukan waktu kedaluwarsa URL yang ditandatangani. Timestamp mengikuti format waktu UNIX. Ini adalah jumlah detik yang telah berlalu sejak pukul 00:00:00 pada 1 Januari 1970. Timestamp adalah string yang terdiri dari 10 bilangan bulat desimal positif dan tidak terkait dengan zona waktu.
nullDalam kebanyakan kasus, periode validitas URL yang ditandatangani sama dengan nilai parameter TTL. Dalam beberapa kasus, server penandatanganan juga memberikan nilai TTL ke URL yang ditandatangani. Timestamp = UNIX timestamp pada server penandatanganan + TTL yang diberikan oleh server penandatanganan. Periode validitas URL yang ditandatangani = Timestamp + TTL yang dikonfigurasikan pada DCDN.
rand
Bilangan acak. String tersebut tidak boleh mengandung tanda hubung (-). Contoh: 477b3bbc253f467b8def6711128c7bec. Kami merekomendasikan Anda menggunakan pengenal unik universal (UUID).
uid
ID pengguna. Atur bidang ini ke 0.
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 = "URI-Timestamp-rand-uid-PrivateKey" (URI menentukan alamat yang menunjuk ke sumber daya yang diminta. URI tidak mengandung parameter seperti /Filename.) md5hash = md5sum(sstring)Logika Autentikasi
Ketika Point of Presence (POP) menerima permintaan, POP memeriksa apakah waktu hasil penambahan
timestampdan nilaiTTLdalam permintaan lebih awal dari waktu saat ini.Jika waktu hasil penambahan
timestampdan nilaiTTLlebih awal dari waktu saat ini, POP menganggap URL telah kedaluwarsa dan mengembalikan kesalahan 403.Jika waktu hasil penambahan
timestampdan nilaiTTLlebih lambat dari waktu saat ini, string dihasilkan berdasarkansstringyang dijelaskan dalam tabel sebelumnya. Kemudian, nilaimd5hashdihitung menggunakan algoritma MD5. Nilaimd5hashyang dihasilkan dibandingkan dengan nilaimd5hashdalam permintaan.Jika nilainya sama, permintaan lolos autentikasi. POP mengembalikan sumber daya yang diminta.
nullJika permintaan lolos autentikasi, 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://DomainName/FileName.Format URL dalam permintaan asal adalah
http://DomainName/FileName.
Jika kedua nilai tersebut berbeda, permintaan gagal autentikasi. POP mengembalikan kode status HTTP 403.
Contoh
Berikut adalah contoh implementasi tipe A penandatanganan.
Kondisi Sampel
Mengambil objek dari server asal:
http://domain.example.com/video/standard/test.mp4nullJika URL objek yang diminta mengandung karakter Cina, Anda perlu mengkodekan URL sebelum menggabungkan URL yang ditandatangani.
URL asli:
https://example.com/image/阿里云.jpgURL yang dikodekan:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Atur auth_key menjadi aliyuncdnexp1234.
Atur timestamp menjadi 1444435200. Waktu ketika server penandatanganan menghasilkan URL yang ditandatangani adalah pukul 08:00:00 (UTC+8) pada 10 Oktober 2015, yang dikonversi menjadi bilangan bulat desimal 1444435200.
Prosedur Penggabungan
Hasilkan string tanda tangan yang digunakan untuk menghitung nilai
md5hash./video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234Hitung nilai
md5hashberdasarkan string tanda tangan.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
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 23bf85053008f5c0e791667a313e28ce, dan URL yang ditandatangani berada dalam periode validitas, permintaan lolos autentikasi. Jika tidak, autentikasi gagal.