URL imzalama, site kaynaklarınızı yetkisiz indirmelere ve hotlinking'e karşı korur. Alibaba Cloud CDNDCDN dört farklı imzalama yöntemi destekler. B türü imzalama, süre sınırlı erişim kontrolü sağlamak amacıyla zaman damgasını ve MD5 karmasını URL yoluna gömer.
Çalışma mekanizması
-
B türü imzalama için imzalı URL yapısı
http://DomainName/{<timestamp>/<md5hash>}/FileNameNot{}içindeki içerik, standart URL'ye eklenen imzalama bilgileridir.Kimlik doğrulama alanları
Alan
Açıklama
DomainName
Hızlandırılan alan adı.
timestamp
İmzalama sunucusunun imzalı URL'yi oluşturduğu saat (UTC+8 formatında
YYYYMMDDHHMM). Bu alan, validity period ile birlikte imzalı URL'nin ne zaman sona ereceğini belirler.NotConfigure URL Signing konsolunda TTL değerini yapılandırın. İmzalı URL,
timestamp+ yapılandırılan geçerlilik süresi sonunda sona erer.md5hash
0-9 arası rakamlar ve a-z arası küçük harflerden oluşan, MD5 algoritması kullanılarak hesaplanan 32 karakterlik bir dizedir.
md5hashdeğeri aşağıdaki dizeden hesaplanır.sstring = "Privatekey+timestamp+Path" (Path is the relative address of the requested object, which does not contain parameters, such as /Filename) md5hash = md5sum(sstring)Filename
İstenen dosyanın yolu. Yol
/ile başlamalıdır. -
Kimlik doğrulama mantığı
Bir CDNDCDN sunucusu bir istek aldığında,
timestampilevalidity periodtoplamının geçerli saatten önce olup olmadığını kontrol eder.Toplam geçerli saatten önceyse URL'nin süresi dolmuş demektir ve sunucu HTTP 403 döndürür.
-
Toplam geçerli saatten sonraysa sunucu
sstringformatında bir dize oluşturur, MD5 algoritmasını kullanarakmd5hashdeğerini hesaplar ve bunu istektekimd5hashdeğeriyle karşılaştırır.-
Değerler eşleşirse kimlik doğrulama başarılı olur ve kaynak döndürülür.
NotKimlik doğrulama başarılı olduktan sonra, URL'nin orijinal formatını geri yüklemek amacıyla imzalama parametreleri URL'den kaldırılır. Bu işlem önbellek isabet oranını artırır ve kaynağa dönüş trafiğini azaltır. Örnek:
Kimlik doğrulama parametrelerini içeren URL:
http://DomainName/{<timestamp>/<md5hash>}/FileName-
Kimlik doğrulama başarılı olduktan sonra:
Önbellek anahtarını oluşturmak için kullanılan URL:
http://DomainName/FileNameKaynağa erişim için kullanılan URL:
http://DomainName/FileName
Değerler eşleşmezse kimlik doğrulama başarısız olur ve HTTP 403 döndürülür.
-
İmzalı URL örneği
Aşağıdaki örnek, B türü imzalamanın nasıl çalıştığını göstermektedir.
-
Örnek koşullar
-
Orijinal istek nesnesi:
http://domain.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3Notİstek URL'si ASCII dışı karakterler içeriyorsa öncelikle URL'yi kodlamanız gerekir. Karma dizesini oluşturmak için kodlanmış URL'yi kullanın. Örnek:
Orijinal URL:
https://example.com/image/AlibabaCloud.jpgKodlanmış URL:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
CDNDCDN sitesi için alan adı (DomainName):
domain.example.com.Zaman damgası (timestamp):
201508150800.Özel anahtar (Privatekey):
aliyuncdnexp1234.Kullanıcı isteğinin göreli yolu (Path):
/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.Kaynağa erişim için alınacak dosyanın yolu (Filename):
/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.
-
-
Birleştirme akışı
-
Karma işlemi için dizeyi oluşturun:
// sstring="Privatekey+timestamp+Path" sstring=aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3 -
md5hash değerini hesaplayın:
// md5hash = md5sum(sstring) md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0 -
İmzalı URL'yi oluşturun:
// Signed URL=http://DomainName/{<timestamp>/<md5hash>}/FileName http://domain.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
-
Bir istemci imzalı URL ile bir istek gönderdiğinde, CDNDCDN sunucusu md5hash değerini yeniden hesaplar. Bu değer istekteki md5hash değeriyle (9044548ef1527deadafa49a890a377f0) eşleşir ve URL'nin süresi dolmamışsa kimlik doğrulama başarılı olur. Aksi takdirde kimlik doğrulama başarısız olur.