Authorization

桉樹海象連接問題

  • March 6, 2012

我從 Eucalyptus 開始,具有一些 S3 和 EC2 背景。我有一個應用程序,我使用個人庫與 S3 互動並從那裡儲存/檢索文件。現在我想讓我的應用程序也與海象兼容。

這是我的設置:

Ubuntu 10.04 UEC 伺服器:

  • 剛剛將它安裝在一個新的 VM 上,選擇除 NC 之外的所有組件,因為我只需要 Walrus
  • 啟動後,我驗證海象正在執行10.211.55.18:8773/services/Walrus
  • 轉到10.211.55.18:8443門戶網站並更改管理員密碼
  • 從我檢索查詢介面憑據(id+secret)的同一個地方

我能夠通過 Cyber​​duck 和 Cloudberry 與 Walrus 毫無問題地進行互動,然後我創建了一個儲存桶“mybucket”和一個對象“myobject”,但無法使用程式 HTTP 庫發出簡單的請求,既不使用 curl 生成授權。

如果我轉到瀏覽器並插入:http://10.211.55.18:8773/services/Walrus/mybucket/myfile我收到一條帶有授權錯誤的漂亮 XML 消息(如預期的那樣)。

但是在嘗試獲取該對象時,我已經完成了以下簽名過程(虛擬碼):

digest = new_openssl_sha1_digest

date = "Sat, 03 Mar 2012 18:13:54 GMT" (now UTC datetime)

description = "GET\n\n\nSat, 03 Mar 2012 18:13:54 GMT\n/mybucket/myfile"

signature = new_base_64_HMAC(digest, secret_key, description)

headers = { 
           Date: date,  
           Authorization: "AWS <access_key_id>:<signature>"
         }

所以我最終得到了這些請求 URL 和標頭:

小路:http://10.211.55.18:8773/services/Walrus/mybucket/myfile

標題:{"date"=>"Sat, 03 Mar 2012 18:13:54 GMT", "Authorization"=>"AWS WKy3rMzOWPouVOxK1p3Ar1C2uRBwa2XXXXXX:U/fpoVUCbN64h8iRICp9JZzKWgE="}

但是當我如上所述發出 GET 請求時,我只得到一個很小的響應:

<headers>
Status: 400 Unauthorized
Content-Type: text/plain; charset=UTF-8
<body>
Failure: 400 Bad Request

我找不到我做錯了什麼,我正在關注 S3 簽名過程。我需要了解這一點,因為我需要為我的應用程序實現一個海象外掛,所以我不能使用第三方工具。

希望有人能幫忙,謝謝。

好吧,我發現發生了什麼…實際上,海像在簽名中也包含 /services/Walrus 路徑,我只是在 /mybucket/myfile 上簽名。所以可以通過簽署字元串’/services/Walrus/bucket/file’來解決這個問題,就是這樣!

引用自:https://serverfault.com/questions/366034