2013-10-07 121 views
0

我想實現一個圖像的卸載只使用rest api的亞馬遜s3。我已經看過他們的文檔,但問題是我只使用臨時證書,該證書將過期約一個小時。下面是響應簽名不匹配s3上傳對象

{ 
accessKey: "mykey" 
secretKey: "mysecret" 
token: "mytemptoken" 
expiry: 1381128021000 
} 

我的政策

POLICY_JSON = { "expiration": "2013-12-03T12:29:27.000Z", 
      "conditions": [ 
        ["eq", "$bucket", this.get('bucket')], 
        ["starts-with", "$key", this.get('key')], 
        {"acl": this.get('acl')}, 
        {"success_action_redirect": this.get('successActionRedirect')}, 
        ["starts-with", "$Content-Type", this.get('contentType')] 
      ] 
      }; 

這裏是我試過到目前爲止: 使用Chrome提前休息客戶端我進入這個網址:https://mybucket.s3.amazonaws.com/avatars/[email protected]

Authorization: AWS mykey:CXp5qqO6q552VDYUI0aBlSd/pTs= 
x-amz-security-token: mytemptoken 
x-amz-date: Mon, 07 OCt 2013 06:20:37 GMT 

的的頭結果是:403 Forbidden和其說的SignatureDoesNotMatch。有沒有人能夠使用s3的Rest Api來完成對象的上傳(不使用SDK的)。客戶問我是否有可能只用javascript來構建它。這可能嗎?

回答

1

如果你不簽名的內容? Check this如何簽名。簽名後,您必須傳遞授權標頭中的簽名值。

授權:AWS AWSAccessKeyId:簽名

+0

嗨,感謝您的回答。是的,我在我的授權標題上添加了簽名。我使用以下代碼生成了我的簽名:var policyBase64 = Base64.encode(JSON.stringify(POLICY_JSON)); var signature = b64_hmac_sha1(secret,policyBase64); –

+0

現在工作嗎? – Satish

+0

不行,它仍然說SignatureDoesNotMatch。你能看看我的政策json嗎?我的政策有什麼缺失嗎?我使用臨時憑證,因此我在標題上添加了x-amz-security-token。 –