閱讀142 返回首頁    go 阿裏雲


鑒權配置__訪問控製_用戶指南_CDN-阿裏雲

概述

URL鑒權功能旨在保護用戶站點的內容資源不被非法站點下載盜用。采用防盜鏈方法添加 referer 黑、白名單方式可以解決部分盜鏈問題,但是,由於 referer 內容可以偽造,referer 防盜鏈方式還不能很好的保護站點資源,因此采用URL鑒權方式保護用戶源站資源更為安全有效。

原理

URL鑒權功能是通過阿裏雲CDN加速節點與客戶資源站點配合實現的一種更為安全可靠的源站資源防盜方法。由CDN客戶站點提供給用戶加密 URL(包含權限驗證信息),用戶使用加密後的 URL 向加速節點發起請求,加速節點對加密 URL 中的權限信息進行驗證以判斷請求的合法性,對合法請求給予正常響應,拒絕非法請求,從而有效保護CDN客戶站點資源。

URL鑒權方式

阿裏雲CDN 兼容並支持A、B、C三種鑒權方式,用戶可以根據自己的業務情況,選擇合適的鑒權方式,來實現對源站資源的有效保護

A鑒權方法

原理說明

用戶訪問加密 URL 構成
  1. https://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
鑒權字段描述
  • PrivateKey 字段用戶可以自行設置
  • 有效時間1800s是指,用戶訪問客戶源服務器時間超過自定義失效時間(timestamp字段指定)的1800s後,該鑒權失效;例如用戶設置訪問時間2020-08-15 15:00:00,鏈接真正失效時間是2020-08-15 15:30:00
字段 描述
timestamp 失效時間,整形正數,固定長度10,1970年1月1日以來的秒數。用來控製失效時間,10位整數,有效時間1800s
rand 隨機數,一般設成0
uid 暫未使用(設置成0即可)
md5hash 通過md5算法計算出的驗證串,數字和小寫英文字母混合0-9a-z,固定長度32

CDN服務器拿到請求後,首先會判斷請求中的 timestamp 是否小於當前時間,如果小於,則認為過期失效並返回HTTP 403錯誤。如果 timestamp 大於當前時間,則構造出一個同樣的字符串(參考以下sstring構造方式)。然後使用MD5算法算出 HashValue ,再和請求中帶來的 md5hash 進行比對。比對結果一致,則認為鑒權通過,返回文件。否則鑒權失敗,返回HTTP 403錯誤。

  • HashValue 是通過以下字符串計算出來的:
    1. sstring = "URI-Timestamp-rand-uid-PrivateKey" (URI是用戶的請求對象相對地址,不包含參數,如 /Filename)
    2. HashValue = md5sum(sstring)

示例說明

  1. 通過 req_auth 請求對象:

    1. https:// cdn.example.com/video/standard/1K.html
  2. 密鑰設為:aliyuncdnexp1234 (由用戶自行設置)

  3. 鑒權配置文件失效日期為:2015年10月10日00:00:00,計算出來的秒數為1444435200
  4. 則CDN服務器會構造一個用於計算Hashvalue的簽名字符串:

    1. /video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234"
  5. CDN服務器會根據該簽名字符串計算HashValue:

    1. HashValue = md5sum("/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234") = 80cd3862d699b7118eed99103f2a3a4f
  6. 則請求時url為:

    1. https://cdn.example.com/video/standard/1K.html?auth_key=1444435200-0-0-80cd3862d699b7118eed99103f2a3a4f

計算出來的HashValue與用戶請求中帶的 md5hash = 80cd3862d699b7118eed99103f2a3a4f 值一致,於是鑒權通過

B鑒權方式

原理說明

用戶訪問加密 URL 格式
  • 用戶訪問的 URL 如下:
  1. https://DomainName/timestamp/md5hash/FileName

加密URL的構造:域名後跟生成URL的時間(精確到分鍾)(timestamp)再跟md5值(md5hash),最後拚接回源服務器的真實路徑(FileName),URL有效時間為1800s

  • 當鑒權通過時,實際回源的URL是:
  1. https://DomainName/FileName
鑒權字段描述
  • 注意:PrivateKey 由CDN客戶自行設置
  • 有效時間1800s是指,用戶訪問客戶源服務器時間超過自定義失效時間(timestamp字段指定)的1800s後,該鑒權失效;例如用戶設置訪問時間2020-08-15 15:00:00,鏈接真正失效時間是2020-08-15 15:30:00
字段 描述
DomainName CDN客戶站點的域名
timestamp 資源失效時間,作為URL的一部分,同時作為計算 md5hash 的一個因子,格式為: YYYYMMDDHHMM ,有效時間1800s
md5hash 以timestamp、FileName和預先設定好的 PrivateKey 共同做MD5獲得的字符串,即 md5(PrivateKey + timestamp + FileName)
FileName 實際回源訪問的URL (注意,鑒權時候FileName要以/開頭)

示例說明

  1. 回源請求對象:

    1. https://cdn.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
  2. 密鑰設為:aliyuncdnexp1234 (用戶自行設置)

  3. 用戶訪問客戶源服務器時間為 201508150800(格式為: YYYYMMDDHHMM
  4. 則CDN服務器會構造一個用於計算 md5hash 的簽名字符串:

    1. aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
  5. 服務器會根據該簽名字符串計算 md5hash :

    1. md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0
  6. 請求CDN時url:

    1. https://cdn.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

計算出來的 md5hash 與用戶請求中帶的 md5hash = 9044548ef1527deadafa49a890a377f0 值一致,於是鑒權通過

C鑒權方式

原理說明

用戶訪問加密 URL 格式

格式1

https://DomainName/{<md5hash>/<timestamp>}/FileName

格式2https://DomainName/FileName{&KEY1=<md5hash>&KEY2=<timestamp>}

  • 花括號中的內容表示在標準的URL基礎上添加的加密信息
  • <md5hash> 是驗證信息經過 MD5 加密後的字符串;
  • <timestamp> 是未加密的字符串,以明文表示。固定長度10,1970年1月1日以來的秒數,表示為十六進製
  • 采用格式一進行URL加密,例如
    1. https://cdn.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv

<md5hash> 為 a37fa50a5fb8f71214b1e7c95ec7a1bd<timestamp> 為 55CE8100

鑒權字段描述
  • <md5hash> 部分字段描述
字段 描述
PrivateKey 幹擾串,不同客戶采用不同的幹擾串
FileName 實際回源訪問的URL (注意,鑒權時候path要以/開頭)
time 用戶訪問源服務器時間,取 UNIX 時間,以十六進製數字字符表示。
  • PrivateKey 取值 aliyuncdnexp1234
  • FileName 取值 /test.flv
  • time 取值 55CE8100
  • 因此 md5hash 值為

    1. md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
  • 明文: timestamp = 55CE8100

  • 這樣生成加密 URL:

格式一:

  1. https://cdn.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv

格式二:

  1. https://cdn.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100

示例說明

用戶使用加密的 URL 訪問加速節點,CDN服務器會先把加密串 1 提取出來, 並得到原始的 URL 的 <FileName> 部分,用戶訪問時間,然後按照定義的業務邏輯進行驗證:

  1. 使用原始的 URL 中的 <FileName> 部分,請求時間及 PrivateKey 進行 MD5 加密得到一個加密串2
  2. 比較加密串 2 與加密串 1 是否一致,如果不一致則拒絕
  3. 取加速節點服務器當前時間,並與從訪問 URL 中所帶的明文時間相減,判斷是否超過設置的時限 t(時間域值 t 默認為 1800s)
  4. 有效時間1800s是指,用戶訪問客戶源服務器時間超過自定義時間的1800s後,該鑒權失效;例如用戶設置訪問時間2020-08-15 15:00:00,鏈接真正失效時間是2020-08-15 15:30:00
  5. 時間差小於設置時限的為合法請求,CDN加速節點才會給予正常的響應,否則拒絕該請求,返回 http 403錯誤

URL鑒權代碼示例

請查看CDN周邊工具 鑒權代碼示例 文檔

配置引導

  • 初始配置添加新域名—>填寫基本信息—>填寫配置信息—>【鑒權配置】

  • 變更配置CDN域名概覽頁—>選擇域名進入管理頁麵—>【鑒權配置】

    • 鑒權配置模塊支持鑒權類型選擇、設置Key
    • 鑒權計算器支持任意URL的鑒權鏈接計算,可以輔助測試鑒權功能是否已生效

最後更新:2016-11-23 17:16:03

  上一篇:go 設置HTTP頭__節點緩存設置_用戶指南_CDN-阿裏雲
  下一篇:go IP黑名單__訪問控製_用戶指南_CDN-阿裏雲