當您希望將私有Bucket內部的Object授權給第三方下載的時候,不應該直接將AccessKey提供給下載者,而應該使用以下兩種方法。
URL簽名
OSS提供了簽名下載的方法。在實現中,開發人員在URL中加入簽名資訊,把該URL轉給第三方實現授權訪問。第三方用戶只需要使用HTTP的GET請求訪問此URL即可下載Object。
- 實現方式
URL中包含簽名樣本如下:
http://<bucket>.<region>.aliyuncs.com/<object>?OSSAccessKeyId=<user access_key_id>&Expires=<unix time>&Signature=<signature_string>
在URL中實現簽名,必須至少包含Signature,Expires,OSSAccessKeyId三個參數。
- OSSAccessKeyId:開發人員的AccessKeyId。
- Expires:開發人員期望URL過期的時間。
- Signature:開發人員簽名的字元串,具體請參考在URL中包含簽名。
说明 此串連需要進行URL編碼。
- 功能使用參考
- API:Get Object
- SDK:Java SDK-使用URL簽名授權訪問
- 控制台:獲取檔案訪問地址
说明 在控制台中只有當Bucket處於私有讀寫權限的時候,獲取的訪問地址才是這種URL中籤名的形式。否則則為不帶簽名的URL形式。
臨時訪問憑證
OSS通過STS (Security Token Service) 提供了臨時憑證給第三方用戶,第三方用戶以在要求標頭部中帶簽名的方式去訪問Object。這種授權方式適合移動場景的下載。臨時訪問憑證實現見STS Java SDK。
實現方式
第三方用戶向APP伺服器請求,獲取了STS頒發的AccessKeyId, AccessKeySecret以及STS Token。第三方用戶以STS AccessKeyId和AccessKeySecret以及STS Token簽名,去請求開發人員的Object的資源。