2013-10-07 91 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。 –