Fitur autentikasi memungkinkan Anda melindungi aset situs web dari unduhan dan akses yang tidak sah. Topik ini menjelaskan cara kerja fitur autentikasi server Edge Security Acceleration (ESA), serta memberikan contoh untuk penjelasan lebih baik.
Cara kerjanya
Komposisi URL yang ditandatangani
http://alamat_server[:port]/[uri]?auth_key=timestamp-rand-nilaihashBidang dalam URL yang ditandatangani
Bidang
Deskripsi
alamat_server
Alamat server tempat sumber daya berada.
port
Port server.
uri
Path relatif dari sumber daya spesifik pada server.
auth_key
Kunci autentikasi yang Anda tentukan.
timestamp
Timestamp saat URL yang ditandatangani kedaluwarsa. Nilai ini dihitung dengan menambahkan waktu hidup (TTL) yang ditentukan ke timestamp UNIX ketika URL yang ditandatangani dibuat. Timestamp pembuatan adalah bilangan bulat 10 digit yang menunjukkan jumlah detik sejak 1 Januari 1970 00:00:00 UTC.
nullrand
String acak. String tersebut tidak boleh mengandung tanda hubung (-). Contoh: 477b3bbc253f467b8def6711128c7bec. Kami merekomendasikan penggunaan pengenal unik universal (UUID).
md5hash
String yang dihitung menggunakan algoritma MD5. String tersebut harus memiliki panjang 32 karakter dan dapat berisi angka serta huruf kecil.
Metode perhitungan:
string_to_sign = "URI-Timestamp-rand-KunciPrivat" (URI menunjukkan path relatif dari sumber daya spesifik dan tidak mengandung parameter string kueri. Contoh: /accesslog/post) md5hash = md5sum(string_to_sign)Logika autentikasi
Saat point of presence (POP) menerima permintaan, POP memeriksa apakah nilai
timestamplebih awal dari waktu saat ini.Jika
timestamplebih awal dari waktu saat ini, POP menganggap bahwa URL yang diminta telah kedaluwarsa dan mengembalikan kode status HTTP 403.Jika
timestamplebih lambat dari waktu saat ini, string dihasilkan menggunakanstring_to_signyang dijelaskan dalam tabel sebelumnya. Kemudian, nilaimd5hashdihasilkan menggunakan algoritma MD5. Nilaimd5hashyang dihasilkan dibandingkan dengan nilaimd5hashdalam permintaan.Jika kedua nilai sama, permintaan lolos autentikasi. POP mengembalikan sumber daya yang diminta.
Jika berbeda, permintaan gagal autentikasi. POP mengembalikan kode status HTTP 403.
Contoh
URL sumber daya adalah http://abc.aliyun.com:8080/accesslog/post, KunciPrivat adalah aliyuncdn1234, dan TTL yang ditentukan oleh WaktuKedaluwarsa adalah 300 detik.
Asumsikan waktu saat ini adalah 00:00:00 pada 1 Desember 2017, UTC+8:00, yang direpresentasikan sebagai 1512057600 dalam format UNIX. timestamp yang terkandung dalam URL yang ditandatangani dihitung menggunakan rumus berikut:
timestamp = 1512057600 + 300 = 1512057900
String yang akan ditandatangani:
string_to_sign = "/accesslog/post-1512057900-0-aliyuncdn1234"Hitung nilai md5hash berdasarkan string ini:
md5hash = md5sum("/accesslog/post-1512057900-0-aliyuncdn1234") = 0b3cc22622bdbb82d5ba632a5a5c89caURL yang ditandatangani:
http://abc.aliyun.com:8080/accesslog/post?auth_key=1512057900-0-0b3cc22622bdbb82d5ba632a5a5c89ca
Jika klien menggunakan URL yang ditandatangani untuk meminta sumber daya, ESA POP membandingkan nilai md5hash yang dihitung dengan nilai md5hash dalam permintaan. Jika nilainya sama (0b3cc22622bdbb82d5ba632a5a5c89ca dalam contoh ini), dan URL yang ditandatangani masih dalam periode validitas, permintaan dilayani sesuai harapan. Jika nilainya berbeda, permintaan gagal autentikasi.