URL鑒權功能主要用於保護使用者網站資源不被非法網站下載或盜用。阿里雲CDN為您提供了四種鑒權方式,本文為您詳細介紹鑒權方式F的原理和樣本說明。
原理說明
鑒權方式F加密URL構成
訪問URL格式:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}說明{}中的內容表示在標準URL基礎上添加的加密資訊。訪問URL中不能包含中文。
不支援包含
?帶參數的URL鑒權。樣本中的
sign和time是系統預設參數。支援在配置URL鑒權控制台中對簽名參數和時間戳記參數進行自訂配置。
欄位
描述
DomainName
CDN網站的網域名稱。
PrivateKey
使用者自訂鑒權key,由16~32個字元(支援大寫字母、小寫字母、數字)組成。
FileName
實際回源訪問的URL,鑒權時Filename需以
/開頭。timestamp
簽算伺服器產生鑒權URL的時間,與鑒權URL有效時間長度共同控制鑒權URL的失效時間。時間點取自簽算伺服器的Unix時間戳記(Unix時間戳記是從UTC時間1970年01月01日00時00分00秒到現在的總秒數,是十進位的整型正數,固定長度為10,與時區不轉換),支援在配置URL鑒權控制台中將時間戳記格式設定為十進位(Unix 時間戳記)或十六進位(Unix 時間戳記)。
說明鑒權URL的有效時間長度可以在配置URL鑒權控制台中使用鑒權URL有效時間長度進行配置。配置完成之後,鑒權URL的到期時間 =
timestamp+ CDN配置的鑒權URL有效時間長度。md5hash
通過MD5演算法計算出的字串,由數字0~9和小寫英文字母a~z混合組成,固定長度32。
md5hash的值通過以下字串計算得到。sstring = "Privatekey+URI+timestamp" (URI是使用者的請求對象相對位址,不包含參數,如/Filename) md5hash = md5sum(sstring)鑒權邏輯說明
CDN伺服器接到資源訪問請求後,判斷
timestamp+鑒權URL有效時間長度是否小於目前時間。如果
timestamp+鑒權URL有效時間長度小於目前時間,伺服器判定到期失效,並返回HTTP 403錯誤。如果
timestamp+鑒權URL有效時間長度大於目前時間,則以sstring方式構造出一個字串(參考表格中sstring構造方式),然後使用MD5演算法算出md5hash的值,再將計算出的md5hash值與使用者訪問請求中攜帶的md5hash的值進行比對。結果一致,鑒權通過,返回資源請求。
說明當鑒權通過時,會去掉URL中與鑒權相關的部分參數,還原為原始URL,這樣可以提高快取命中率,減少回源流量。例如:
帶鑒權參數的URL格式:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}鑒權通過後:
實際產生緩衝key的URL格式:
http://DomainName/FileName實際回源的URL格式:
http://DomainName/FileName
結果不一致,鑒權失敗,返回HTTP 403錯誤。
鑒權URL樣本
通過以下樣本說明,您可以準確理解鑒權方式F的實現方式。
樣本條件
回源請求對象:
http://domain.example.com/test.flv說明如果請求URL中包含中文(或其他非 ASCII 字元),必須先進行 編碼(encode),然後再使用編碼後的URL進行待雜湊字串的拼接。例如:
原始URL:
https://example.com/image/阿里雲.jpg編碼後的URL:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
PrivateKey取值:
aliyuncdnexp1234。timestamp取值:
55CE8100。
拼接流程
CDN伺服器構造一個用於計算
md5hash的待雜湊字串。aliyuncdnexp1234/test.flv55CE8100根據該待雜湊字串,CDN伺服器會計算出
md5hash。md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd產生鑒權URL。
鑒權URL格式:
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
當使用用戶端提供的加密URL進行訪問時,如果CDN伺服器計算出來的md5hash值與訪問請求中帶的md5hash值相同,都為a37fa50a5fb8f71214b1e7c95ec7a1bd,並且鑒權URL在有效期間內,則鑒權通過,反之鑒權失敗。