使用查詢參數驗證
更新時間 2024-09-20 15:42:04
最近更新時間: 2024-09-20 15:42:04
分享文章
本節主要介紹簽名使用查詢參數驗證。
除了授權頭以外,用戶可以通過URL中加入查詢參數來表達簽名信息的方式,將該URL轉給第三方實現授權訪問,也稱為預簽名URL。這對于使用第三方瀏覽器獲取對象存儲數據的用戶非常有用,不需要代理請求。這種方式通過構造并加密一個終端用戶瀏覽器可以檢索到的預簽名的請求來實現,同時設置過期時間來標明預簽名的有效期。
預簽名URL支持GET請求和POST請求(POST Object除外)。
注意使用預簽名URL方式,有將您授權的數據在過期時間內曝露在互聯網上的風險,建議您預先評估后使用。
URL中包含簽名的示例如下:
//oos-cn.ctyunapi.cn/quotes/n-*elson?AWSAccessKeyId=44CF9590006BF252F707&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D
注意在URL中實現簽名,必須至少包含Signature,Expires,AWSAccessKeyId三個參數。
請求參數
| 參數 | 描述 | 是否必須 |
|---|---|---|
| AWSAccessKeyId | 用戶的AccessKeyID信息,可以登錄到可以登錄到對象存儲(經典版)I型控制中心,點擊“訪問控制”>“安全憑證”>“密鑰”查看;或者調用ListAccessKey查看。 類型:字符串。 |
是 |
| Expires | 簽名過期時間,按照秒來計算的。服務器端超過這個時間的請求將被拒絕。 類型:字符串。 |
是 |
| Signature | URL是按照HMAC-SHA1的StringToSign的Base64編碼方式編碼。 類型:字符串。 |
是 |
Expires是一個UNIX時間(自UTC時間1970年1月1號開始的秒數),用于標識該URL的超時時間。如果OOS接收到這個URL請求的時候晚于簽名中包含的Expires參數時,則返回請求超時的錯誤碼。例如:當前時間是1141889060,開發者希望創建一個60秒后自動失效的URL,則可以設置Expires時間為1141889120。
URL中包含簽名的算法和Header中包含簽名的算法基本一樣,主要區別如下:
- 通過URL包含簽名時,之前的Date參數換成Expires參數。
- 如果在URL和Header中同時包含簽名,以Header中的簽名為準。
- 對于URL預簽名,如果傳入的Signature,Expires,AWSAccessKeyId出現不止一次,以第一次為準。
- 對于URL預簽名,請求先驗證請求時間是否晚于Expires時間:
- 如果請求時間晚于Expires時間,則返回錯誤響應碼。
- 如果請求時間不晚于Expires時間,則驗證簽名。