全部產品
Search
文件中心

Edge Security Acceleration:標態鑒權說明

更新時間:Mar 13, 2025

鑒權功能主要用於保護使用者網站資源不被非法網站下載盜用。本文將介紹ESA提供的標態鑒權的原理及樣本說明。

原理說明

  • 使用者訪問加密 URL 構成

    http://server_address[:port]/[uri]?auth_key=timestamp-rand-md5hash
  • 鑒權欄位說明

    欄位

    描述

    server_address

    客戶的伺服器位址。

    port

    客戶要投遞的伺服器的連接埠。

    uri

    客戶提供的相對位址。

    auth_key

    客戶設定的鑒權密鑰。

    timestamp

    簽算伺服器產生鑒權URL的時間加使用者佈建的鑒權有效期間配置的時間長度。時間點取自簽算伺服器的Unix時間戳記(從1970年01月01日00時00分00秒到現在的總秒數,固定長度為10)。

    rand

    隨機數。建議使用UUID,不能包含中劃線(-),例如:477b3bbc253f467b8def6711128c7bec。

    md5hash

    通過MD5演算法計算出的32位字串,由數字和小寫字母組成。

    計算方法:

    string_to_sign = "URI-Timestamp-rand-PrivateKey" (URI是使用者提供的相對位址,不包含參數,如 /accesslog/post)
    md5hash = md5sum(string_to_sign)
  • 鑒權邏輯說明

    ESA伺服器接到資源訪問請求後,判斷timestamp是否小於目前時間。

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

    • 如果timestamp大於目前時間,則以string_to_sign方式構造出一個字串(參考表格中string_to_sign構造方式),然後使用MD5演算法計算出md5hash的值,再將計算出的md5hash值與使用者訪問請求中攜帶的md5hash的值進行比對。

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

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

標態鑒權樣本

使用者A提供的推送地址為 http://abc.aliyun.com:8080/accesslog/post、設定的隱私KeyPrivateKey為 aliyuncdn1234、設定的鑒權有效期間ExpiredTime為300s。

  • 投遞時,ESA伺服器會根據目前時間(假設為北京時間2017年12月1日0點0分0秒,unixtime為1512057600),加上使用者佈建的鑒權有效期間300s作為到期時間timestamp。

    timestamp = 1512057600 + 300 = 1512057900s。

    需要進行加密的字串為:

    string_to_sign = "/accesslog/post-1512057900-0-aliyuncdn1234"
  • 基於該字串計算出md5hash值:

    md5hash = md5sum("/accesslog/post-1512057900-0-aliyuncdn1234") = 0b3cc22622bdbb82d5ba632a5a5c89ca
  • 鑒權URL格式:

    http://abc.aliyun.com:8080/accesslog/post?auth_key=1512057900-0-0b3cc22622bdbb82d5ba632a5a5c89ca

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