鑒權配置__訪問控製_用戶指南_CDN-阿裏雲
概述
URL鑒權功能旨在保護用戶站點的內容資源不被非法站點下載盜用。采用防盜鏈方法添加 referer 黑、白名單方式可以解決部分盜鏈問題,但是,由於 referer 內容可以偽造,referer 防盜鏈方式還不能很好的保護站點資源,因此采用URL鑒權方式保護用戶源站資源更為安全有效。
原理
URL鑒權功能是通過阿裏雲CDN加速節點與客戶資源站點配合實現的一種更為安全可靠的源站資源防盜方法。由CDN客戶站點提供給用戶加密 URL(包含權限驗證信息),用戶使用加密後的 URL 向加速節點發起請求,加速節點對加密 URL 中的權限信息進行驗證以判斷請求的合法性,對合法請求給予正常響應,拒絕非法請求,從而有效保護CDN客戶站點資源。
URL鑒權方式
阿裏雲CDN 兼容並支持A、B、C三種鑒權方式,用戶可以根據自己的業務情況,選擇合適的鑒權方式,來實現對源站資源的有效保護
A鑒權方法
原理說明
用戶訪問加密 URL 構成
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
是通過以下字符串計算出來的:sstring = "URI-Timestamp-rand-uid-PrivateKey" (URI是用戶的請求對象相對地址,不包含參數,如 /Filename)
HashValue = md5sum(sstring)
示例說明
通過
req_auth
請求對象:https:// cdn.example.com/video/standard/1K.html
密鑰設為:aliyuncdnexp1234 (由用戶自行設置)
- 鑒權配置文件失效日期為:2015年10月10日00:00:00,計算出來的秒數為1444435200
則CDN服務器會構造一個用於計算Hashvalue的簽名字符串:
/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234"
CDN服務器會根據該簽名字符串計算HashValue:
HashValue = md5sum("/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234") = 80cd3862d699b7118eed99103f2a3a4f
則請求時url為:
https://cdn.example.com/video/standard/1K.html?auth_key=1444435200-0-0-80cd3862d699b7118eed99103f2a3a4f
計算出來的HashValue與用戶請求中帶的 md5hash = 80cd3862d699b7118eed99103f2a3a4f 值一致,於是鑒權通過
B鑒權方式
原理說明
用戶訪問加密 URL 格式
- 用戶訪問的 URL 如下:
https://DomainName/timestamp/md5hash/FileName
加密URL的構造:域名後跟生成URL的時間(精確到分鍾)(timestamp)再跟md5值(md5hash),最後拚接回源服務器的真實路徑(FileName),URL有效時間為1800s
- 當鑒權通過時,實際回源的URL是:
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要以/開頭) |
示例說明
回源請求對象:
https://cdn.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
密鑰設為:aliyuncdnexp1234 (用戶自行設置)
- 用戶訪問客戶源服務器時間為 201508150800(格式為:
YYYYMMDDHHMM
) 則CDN服務器會構造一個用於計算 md5hash 的簽名字符串:
aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
服務器會根據該簽名字符串計算 md5hash :
md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0
請求CDN時url:
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加密,例如
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 值為
md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
明文:
timestamp = 55CE8100
- 這樣生成加密 URL:
格式一:
https://cdn.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
格式二:
https://cdn.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
示例說明
用戶使用加密的 URL 訪問加速節點,CDN服務器會先把加密串 1 提取出來, 並得到原始的 URL 的 <FileName>
部分,用戶訪問時間,然後按照定義的業務邏輯進行驗證:
- 使用原始的 URL 中的
<FileName>
部分,請求時間及 PrivateKey 進行 MD5 加密得到一個加密串2 - 比較加密串 2 與加密串 1 是否一致,如果不一致則拒絕
- 取加速節點服務器當前時間,並與從訪問 URL 中所帶的明文時間相減,判斷是否超過設置的時限 t(時間域值 t 默認為 1800s)
- 有效時間1800s是指,用戶訪問客戶源服務器時間超過自定義時間的1800s後,該鑒權失效;例如用戶設置訪問時間2020-08-15 15:00:00,鏈接真正失效時間是2020-08-15 15:30:00
- 時間差小於設置時限的為合法請求,CDN加速節點才會給予正常的響應,否則拒絕該請求,返回 http 403錯誤
URL鑒權代碼示例
請查看CDN周邊工具中 鑒權代碼示例 文檔
配置引導
初始配置添加新域名—>填寫基本信息—>填寫配置信息—>【鑒權配置】
變更配置CDN域名概覽頁—>選擇域名進入管理頁麵—>【鑒權配置】
- 鑒權配置模塊支持鑒權類型選擇、設置Key
- 鑒權計算器支持任意URL的鑒權鏈接計算,可以輔助測試鑒權功能是否已生效
最後更新:2016-11-23 17:16:03
上一篇:
設置HTTP頭__節點緩存設置_用戶指南_CDN-阿裏雲
下一篇:
IP黑名單__訪問控製_用戶指南_CDN-阿裏雲
CompleteMultipartUpload__關於MultipartUpload的操作_API 參考_對象存儲 OSS-阿裏雲
Docker使用方法__軟件鏡像_高性能計算-阿裏雲
附錄一 元數據庫數據字典__附錄_使用手冊_分析型數據庫-阿裏雲
雲服務器 ECS 快照回滾規則FAQ
報警規則管理__報警服務_用戶指南_雲監控-阿裏雲
API 概覽__API 參考_雲服務器 ECS-阿裏雲
提交轉碼作業__轉碼接口_API使用手冊_媒體轉碼-阿裏雲
從本地SQL Server遷移到RDS for SQL Server__數據遷移_用戶指南_數據傳輸-阿裏雲
輕雲或虛擬主機安裝 JOOMLA 提示魔術引號不支持___安全問題_技術分享_雲虛機主機-阿裏雲
推送日誌到LogService__日誌管理使用幫助_控製台使用幫助_消息服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲