全部產品
Search
文件中心

CDN:鑒權方式B說明

更新時間:Feb 26, 2025

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

原理說明

  • 鑒權方式B加密URL構成

    http://DomainName/{<timestamp>/<md5hash>}/FileName
    說明

    {}中的內容表示在標準URL基礎上添加的加密資訊。

    鑒權欄位說明

    欄位

    描述

    DomainName

    CDN網站的網域名稱。

    timestamp

    簽算伺服器產生鑒權URL的時間,與鑒權URL有效時間長度共同控制鑒權URL的失效時間。時間點取自簽算伺服器的“UTC+8”時間,格式為:YYYYMMDDHHMM。

    說明

    多數情況下,鑒權URL的有效時間長度為CDN配置有效時間長度。有時在簽算增加鑒權URL的有效時間長度的,此時,timestamp=Unix時間戳記+增加的時間長度;鑒權URL實際有效時間長度=timestamp+CDN配置的時間長度。

    md5hash

    通過md5演算法計算出的驗證串,由數字0~9和小寫英文字母a~z混合組成,固定長度32。

    md5hash的值通過以下字串計算得到。

    sstring = "Privatekey+timestamp+Path" (Path是使用者的請求對象相對位址,不包含參數,如/Filename)
    md5hash = md5sum(sstring)

    Filename

    實際回源訪問的檔案路徑名,鑒權時Filename需以/開頭。

  • 鑒權邏輯說明

    CDN伺服器接到資源訪問請求後,判斷timestamp+鑒權URL有效時間長度是否小於目前時間:

    • 如果timestamp+鑒權URL有效時間長度小於目前時間,伺服器判定到期失效,並返回HTTP 403錯誤。

    • 如果timestamp+鑒權URL有效時間長度大於目前時間,則以string方式構造出一個字串,然後使用MD5演算法計算出md5hash的值,再將計算出的md5hash值與使用者訪問請求中攜帶的md5hash的值進行比對。

      • 結果一致,鑒權通過,返回資源請求。

        說明

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

        • 實際產生緩衝key的URL格式:http://DomainName/FileName

        • 實際回源的URL格式:http://DomainName/FileName

      • 結果不一致,鑒權失敗,返回HTTP 403錯誤。

鑒權URL樣本

以下樣本說明鑒權方式B的實現。

  • 樣本條件

    • 回源請求對象:

      http://domain.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
      說明

      如果您的回源請求對象中有中文漢字,請先對其進行URL轉碼(即Encode),再進行鑒權URL的拼接。

      • 原始URL:https://example.com/image/阿里雲.jpg

      • 編碼後的URL:https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg

    • CDN網站的網域名稱(DomainName):domain.example.com

    • 時間戳記(timestamp): 201508150800

    • 密鑰(Privatekey):aliyuncdnexp1234

    • 使用者請求相對位址(Path):/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

    • 實際回源訪問的檔案路徑名(Filename):/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

  • 拼接流程

    1. 建構簽章字串:

      // sstring="Privatekey+timestamp+Path"
      sstring=aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
    2. 計算md5hash:

      // md5hash = md5sum(sstring)
      md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0
    3. 產生鑒權URL:

      // 鑒權URL=http://DomainName/{<timestamp>/<md5hash>}/FileName
      http://domain.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

當使用用戶端提供的加密URL進行訪問時,如果CDN伺服器計算出來的md5hash值與訪問請求中帶的md5hash值相同,都為9044548ef1527deadafa49a890a377f0,並且鑒權URL在有效期間內,則鑒權通過;反之鑒權失敗。