URL鑒權功能主要用於保護使用者網站資源不被非法網站下載或盜用。阿里雲CDN為您提供了三種鑒權方式,本文為您詳細介紹鑒權方式C的原理和樣本說明。
鑒權流程
- CDN開啟URL鑒權:鑒權通過後,會去掉用戶端發起的請求URL中的鑒權參數,把用戶端發起的請求URL(帶鑒權參數)還原為原始URL,然後使用原始URL來產生緩衝key或者發起回源請求。
- CDN關閉URL鑒權:CDN關閉URL鑒權,與此同時,用戶端上發起的請求URL裡面也要去掉鑒權參數,否則,如果CDN上的URL鑒權功能已經關閉了,但是用戶端發起的請求URL裡面依然攜帶鑒權參數的話,就會導致CDN無法把用戶端發起的請求URL(帶鑒權參數)還原為原始URL,最終所有請求都無法命中緩衝,均會透傳回來源站點,導致來源站點的流量大漲,同時也會增加來源站點的流量費用。
原理說明
訪問加密URL格式如下:
- 格式1
http://DomainName/{<md5hash>/<timestamp>}/FileName
- 格式2
http://DomainName/FileName{&KEY1=<md5hash>&KEY2=<timestamp>}
说明
{}
中的內容表示在標準URL基礎上添加的加密資訊。
當鑒權通過時,會去掉URL中與鑒權相關的那部分參數(提高快取命中率,減少回源流量):
- 格式1和格式2,實際產生緩衝key的URL格式均為:
http://DomainName/FileName
- 格式1和格式2,實際回源的URL格式均為:
http://DomainName/FileName
鑒權欄位描述如下表所示。
欄位 | 描述 |
---|---|
DomainName | CDN網站的網域名稱。 |
FileName | 實際回源訪問的URL,鑒權時Filename需以 / 開頭。
|
timestamp | 訪問原始伺服器時間,取UNIX時間。未加密的字串,以明文表示。固定長度10,1970年1月1日以來的秒數,表示為十六進位。 |
md5hash | 通過md5演算法計算出的字串,由數字0-9和小寫英文字母a-z混合組成,固定長度32。 |
樣本說明
通過以下樣本說明,您可以準確理解鑒權方式C的實現方式。
- PrivateKey取值:
aliyuncdnexp1234
。 - FileName取值:
/test.flv
。 - timestamp取值:
55CE8100
。 - md5hash計算值為:
md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd
- 產生加密URL:
说明 如果您加密URL中有中文漢字,請先對其進行URL轉碼(即encode),然後在產生加密URL。
- 格式一:
http://cdn.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
- 格式二:
http://cdn.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
- 格式一:
當您使用加密URL訪問CDN加速節點時,CDN伺服器先把加密串1提取出來,並得到原始URL的
FileName
和訪問時間,然後按照定義的商務邏輯進行驗證,驗證步驟如下:
- 使用原始的URL中的
Filename
、請求時間及PrivateKey
進行md5加密得到一個加密串2。 - 比較加密串2與加密串1是否一致,如果不一致則拒絕。
- 取加速節點伺服器目前時間,並與從訪問URL中所帶的時間相減,判斷是否超過設定的時限t,時間域值t預設為1800s。
- 時間差小於設定時限,請求合法,CDN加速節點正常響應。
- 時間差大於設定時限,拒絕該請求,並返回HTTP 403。
说明 有效時間1800s是指,當您訪問原始伺服器時間超過自訂時間的1800s後,鑒權失效。例如,您設定了訪問時間2020-08-15 15:00:00,連結真正失效時間是2020-08-15 15:30:00。