URL鑒權功能主要用于保護用戶站點資源不被非法站點下載盜用。視頻點播提供了三種鑒權方式,本文為您詳細介紹鑒權方式A的原理和示例說明。
原理說明
鑒權方式A加密URL構成
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
鑒權字段說明
字段 | 描述 |
DomainName | 視頻點播的域名。 |
Filename | 實際回源訪問的URL,鑒權時Filename需以正斜線( |
auth_key | 您設定的鑒權密鑰。 |
timestamp | 簽算服務器生成鑒權URL的時間,與鑒權URL的默認有效時長共同控制鑒權URL的失效時間。時間點取自簽算服務器的“UTC+8”時間,格式為:YYYYMMDDHHMM。 說明 多數情況下,鑒權URL的實際有效時長為視頻點播中配置的默認有效時長。有時在簽算服務器上配置了鑒權URL的有效時長情況下,此時,timestamp=簽算服務器上的Unix時間戳+簽算服務器上配置的有效時長;鑒權URL實際有效時長=timestamp+點播配置的鑒權URL的默認有效時長。 |
rand | 隨機數,一般取值為0。如果要確保每次生成的URL不同,建議使用UUID,不能包含中劃線( |
uid | 用戶ID,暫未使用(設置成0即可)。 |
md5hash | 通過MD5算法計算出的驗證字符串。由數字0~9和小寫英文字母a~z混合組成,固定長度為32。
|
鑒權邏輯說明
CDN服務器接到資源訪問請求后,判斷最終生成鑒權URL請求中的timestamp
+點播控制臺URL鑒權中配置的默認有效時長
是否小于當前時間。
如果
timestamp
+默認有效時長
小于當前時間,服務器判定過期失效,并返回HTTP 403錯誤。如果
timestamp
+默認有效時長
大于當前時間,則以sstring
方式構造出一個字符串(參考上述表格中sstring
構造方式),然后使用MD5算法算出md5hash
的值,再將計算出的md5hash
值與用戶訪問請求中攜帶的md5hash
的值進行比對。結果不一致,鑒權失敗,返回HTTP 403錯誤。
結果一致,鑒權通過,返回資源請求。
說明當鑒權通過時,會去掉URL中與鑒權相關的那部分參數,可以提高緩存命中率,減少回源流量。
實際回源的URL格式:
http://DomainName/FileName
實際生成緩存key的URL格式:
http://DomainName/FileName
鑒權URL拼接示例說明
通過以下示例說明,您可以準確理解鑒權方式A的實現方式。
示例條件
回源請求對象:
http://example.aliyundoc.com/video/standard/test.mp4
說明如果您的回源請求對象中有中文漢字,請先對其進行URL轉碼(即Encode),再進行鑒權URL的拼接。
設置密鑰(PrivateKey)為:aliyunvodexp1234。
簽算服務器生成鑒權URL的時間(timestamp)為:2021-08-01 00:00:00(UTC+8),轉換為十進制的整型數值為1627747200。
拼接流程
CDN服務器構造一個用于計算
md5hash
的簽名字符串。/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234
根據該簽名字符串,CDN服務器計算出
md5hash
。HashValue = md5sum("/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234") = 0e9048c8c7de46b6015618f42de7****
生成鑒權URL。
http://example.aliyundoc.com/video/standard/test.mp4?auth_key=1627747200-0-0-0e9048c8c7de46b6015618f42de7****
當用戶使用鑒權URL進行訪問時,如果視頻點播服務器計算出來的md5hash
值與訪問請求中帶的md5hash
值相同,都為0e9048c8c7de46b6015618f42de7****
,則鑒權通過,反之鑒權失敗。