URL鑒權功能主要用於保護使用者網站資源不被非法網站下載或盜用。阿里雲CDN為您提供了三種鑒權方式,本文為您詳細介紹鑒權方式C的原理和樣本說明。

鑒權流程

  • CDN開啟URL鑒權:鑒權通過後,會去掉用戶端發起的請求URL中的鑒權參數,把用戶端發起的請求URL(帶鑒權參數)還原為原始URL,然後使用原始URL來產生緩衝key或者發起回源請求。 开启
  • CDN關閉URL鑒權:CDN關閉URL鑒權,與此同時,用戶端上發起的請求URL裡面也要去掉鑒權參數,否則,如果CDN上的URL鑒權功能已經關閉了,但是用戶端發起的請求URL裡面依然攜帶鑒權參數的話,就會導致CDN無法把用戶端發起的請求URL(帶鑒權參數)還原為原始URL,最終所有請求都無法命中緩衝,均會透傳回來源站點,導致來源站點的流量大漲,同時也會增加來源站點的流量費用。 关闭

原理說明

訪問加密URL格式如下:
  • 格式1
    
           http://DomainName/{<md5hash>/<timestamp>}/FileName
          
  • 格式2
    
           http://DomainName/FileName{&KEY1=<md5hash>&KEY2=<timestamp>}
          
说明 {} 中的內容表示在標準URL基礎上添加的加密資訊。

當鑒權通過時,會去掉URL中與鑒權相關的那部分參數(提高快取命中率,減少回源流量):

  • 格式1和格式2,實際產生緩衝key的URL格式均為:
    
          http://DomainName/FileName
         
  • 格式1和格式2,實際回源的URL格式均為:
    
          http://DomainName/FileName
         
鑒權欄位描述如下表所示。
欄位 描述
DomainName CDN網站的網域名稱。
FileName 實際回源訪問的URL,鑒權時Filename需以 / 開頭。
timestamp 訪問原始伺服器時間,取UNIX時間。未加密的字串,以明文表示。固定長度10,1970年1月1日以來的秒數,表示為十六進位。
md5hash 通過md5演算法計算出的字串,由數字0-9和小寫英文字母a-z混合組成,固定長度32。

樣本說明

通過以下樣本說明,您可以準確理解鑒權方式C的實現方式。
  • PrivateKey取值: aliyuncdnexp1234
  • FileName取值: /test.flv
  • timestamp取值: 55CE8100
  • md5hash計算值為:
    
           md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
          
  • 產生加密URL:
    说明 如果您加密URL中有中文漢字,請先對其進行URL轉碼(即encode),然後在產生加密URL。
    • 格式一:
      
               http://cdn.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
              
    • 格式二:
      
               http://cdn.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
              
當您使用加密URL訪問CDN加速節點時,CDN伺服器先把加密串1提取出來,並得到原始URL的 FileName 和訪問時間,然後按照定義的商務邏輯進行驗證,驗證步驟如下:
  1. 使用原始的URL中的 Filename 、請求時間及 PrivateKey 進行md5加密得到一個加密串2。
  2. 比較加密串2與加密串1是否一致,如果不一致則拒絕。
  3. 取加速節點伺服器目前時間,並與從訪問URL中所帶的時間相減,判斷是否超過設定的時限t,時間域值t預設為1800s。
    • 時間差小於設定時限,請求合法,CDN加速節點正常響應。
    • 時間差大於設定時限,拒絕該請求,並返回HTTP 403。
    说明 有效時間1800s是指,當您訪問原始伺服器時間超過自訂時間的1800s後,鑒權失效。例如,您設定了訪問時間2020-08-15 15:00:00,連結真正失效時間是2020-08-15 15:30:00。