heroku S3预签名帖子和S3请求签名

时间:2016-09-21 00:27:38

标签: amazon-web-services heroku amazon-s3

我尝试使用pre-signed post from heroku从我的iOS应用程序直接上传到S3。 Heroku将以下内容返回给我的swift应用程序:

{'url': u'https://bucketname.s3.amazonaws.com/filename', 'data': {'url': u'https://bucketname.s3.amazonaws.com/', 'fields': {'Content-Type': 'm4a', 'key': u'filename', 'AWSAccessKeyId': u'XXXXXXXXXXXX', 'acl': 'public-read', 'policy': u'wtLepKMeghI3rt1UeikLoQcNTYtMDktMTBUMTc6NDE6MTJaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHVibGljLXJlYWQifSwgeyJDb250ZW50LVR5cGUiOiAibTRhIn0sIHsiYnVja2V0IjogImZ1eZEaJKYzeDgZwz3lOPtys5B0MigIwImv2OpQm3ylP==', 'signature': u'qr647bMEA9M8LeBVqkJLcvEIO4g='}}}

如您所见,有一个签名:qr647bMEA9M8LeBVqkJLcvEIO4g=

和政策

wtLepKMeghI3rt1UeikLoQcNTYtMDktMTBUMTc6NDE6MTJaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHVibGljLXJlYWQifSwgeyJDb250ZW50LVR5cGUiOiAibTRhIn0sIHsiYnVja2V0IjogImZ1eZEaJKYzeDgZwz3lOPtys5B0MigIwImv2OpQm3ylP==

在AWS documentation中,他们使用的签名示例(如下所示)的字符数比Heroku返回的签名要多得多

Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7

heroku提供的签名是否与亚马逊要求签署请求的签名不同?我不想使用从Heroku返回的签名吗?

1 个答案:

答案 0 :(得分:1)

5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7为十六进制,qr647bMEA9M8LeBVqkJLcvEIO4g=采用base64编码,比十六进制短得多,因为base64使用64个字符进行编码,而hex使用16个字符。

AWS期望使用base64编码进行签名。那么Heroku回归你的是正确的。你有什么问题?