閱讀512 返回首頁    go windows


用戶鑒權__接入圖片服務_老版圖片服務手冊_對象存儲 OSS-阿裏雲

如果用戶需要不經過任何授權,通過瀏覽器即可匿名訪問圖片服務來處理圖片,需要在創建Bucket的時候將Bucket的權限設置為公共讀。

創建Bucket

設置Bucket權限

默認創建的Bucket權限是私有讀寫,Object默認繼承Bucket的權限。 如果用戶需要通過圖片服務訪問私有的Object,需要進行身份鑒權。

圖片服務的用戶鑒權方式和OSS是一致的,有兩種鑒權方式:

  • 在Header中包含簽名
  • 在URL中包含簽名

具體可參考在Header中包含簽名在URL中包含簽名

在URL中包含簽名

假定用戶綁定的域名www.test.com對應的頻道名字為image-demo,object名字為example.jpg,轉換字符串為100w.jpg

首先需要計算Signature字段,計算方法如下:

Signature = base64(hmac-sha1(AccessKeySecret, 
            VERB + "n" 
            + Content-MD5 + "n" 
            + Content-Type + "n" 
            + Expires + "n" 
            + CanonicalizedOSSHeaders
            + CanonicalizedResource))
  • AccessKeySecret表示簽名所需的秘鑰
  • VERB表示HTTP請求方法,例如PUT,GET,DELETE等
  • Content-MD5表示請求內容數據的MD5值,對於圖片處理服務這裏為空字符串
  • Content-Type表示請求內容的類型,對於圖片處理服務這裏為空字符串
  • Expires表示授權給用戶URL簽名過期時間
  • CanonicalizedOSSHeaders表示HTTP中的ObjectMeta組合,對於圖片處理服務這裏為空字符串
  • CanonicalizedResource 表示用戶想要訪問的OSS資源,在圖片處理服務中這項的組成,格式為/channelname/object@處理參數。
  • 構建CanonicalizedResource的方法如下:
    1. 將CanonicalizedResource置成空字符串("")
    2. 放入要訪問的圖片服務資源:“`/channelname/object”(無Object則不填)
    3. 在結尾添加處理參數:@處理參數,(無處理參數則不填)。此時CanonicalizedResource例子如:/channelname/object@100w.jpg
    4. 如果涉及樣式管理操作,那麼將這些查詢字符串及其請求值按照字典序,以&分割,添加到CanonicalizedResource中。此時的CanonicalizedResource例子:/channelname?style&styleName=YourStyleName

例子中的CanonicalizedResource為/image-demo/example.jpg@100w.jpg

注意:上例中的轉換字符串可以是簡單縮略,文字水印,圖片水印、管道和樣式(樣式的分隔符是@!)

這裏需要注意的是,使用URL簽名中Expires和CanonicalizedResource不能為空。

最後生成在URL簽名,必須在參數後包含OSSAccessKeyId、Expires、Signature這三項,具體生成方法可以參考OSS的API文檔中的在URL中包含簽名,上文的例子生成的URL簽名如下:

https://www.test.com/example.jpg%40100w.jpg?OSSAccessKeyId=j4y55h3z88ihxxhlr9nhjjis&Expires=1392949804&Signature=IDBJ09e8Ow4GaPRM1yIf7plH/CI%3D

在Header中包含簽名

除了在URL中包含簽名之外,還可以在HTTP請求的Header中包含簽名,簽名是由Authorization這個Header指定的,具體的構成規則如下:

"Authorization: OSS " + AccessKeyId + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
            VERB + "n" 
            + Content-MD5 + "n" 
            + Content-Type + "n" 
            + Date + "n" 
            + CanonicalizedOSSHeaders
            + CanonicalizedResource))
  • AccessKeySecret表示簽名所需的秘鑰
  • VERB表示HTTP請求方法,例如PUT,GET,DELETE等
  • Content-MD5表示請求內容數據的MD5值,對於圖片處理服務這裏為空字符串
  • Content-Type表示請求內容的類型,對於圖片處理服務這裏為空字符串
  • Date表示此次操作的時間,且必須為HTTP1.1中支持的GMT格式
  • CanonicalizedOSSHeaders表示 http中的object meta組合,對於圖片處理服務這裏為空字符串
  • CanonicalizedResource構造方法請參考上文URL簽名中的CanonicalizedResource的生成方法。

需要注意的

  • Date和CanonicalizedResource不能為空
  • 如果請求中的Date時間和OSS服務器的時間差正負15分鍾以上,OSS圖片處理服務將拒絕該服務,並返回HTTP 403錯誤。

最後更新:2016-11-23 17:16:08

  上一篇:go 關鍵詞__接入圖片服務_老版圖片服務手冊_對象存儲 OSS-阿裏雲
  下一篇:go 使用SDK處理圖片__接入圖片服務_老版圖片服務手冊_對象存儲 OSS-阿裏雲