【问题标题】:heroku S3 pre-signed post and S3 request signatureheroku S3 预签名帖子和 S3 请求签名
【发布时间】:2016-09-21 00:27:37
【问题描述】:

我正在尝试使用 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 返回的签名吗?

【问题讨论】:

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


    【解决方案1】:

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

    AWS 需要 base64 编码的签名。所以 Heroku 返回给你的是正确的。你有什么问题?

    【讨论】:

    • 我第一次尝试向 S3 发出签名请求,但我无法建立连接,所以我决定查看文档,看看我是否做错了什么。我目前收到 http 错误代码 400。不确定我是否以正确的格式提供了所需的值。
    • 400 可能意味着任何事情。响应应该包含更多关于为什么返回 400 的信息。
    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2020-11-16
    • 2021-02-26
    相关资源
    最近更新 更多