如何将s3的v4签名更改为v2?

时间:2018-07-30 09:59:45

标签: amazon-web-services amazon-s3

我有一个运行良好的算法,可以为Amazon s3 Web服务计算V4 Sign,但是我也需要实现V2 Signer。

这两个符号之间是否有总差异列表?

我发现了这个,但这还不是全部,它需要:https://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html

1 个答案:

答案 0 :(得分:1)

最好不要想到Signature V2和Signature V4之间的“变化”。

以下是两种算法的不同之处的完整列表:

  • 一切。

也就是说,差异远大于相似之处。

几乎所有参数名称都不相同 且它们的值计算方式不同 值的格式不同。 V4是对签名算法的完整重新设计。在V4中几乎找不到V2有意义的东西。

因此,根据经验,我的建议是您不要尝试改编或修改V4代码也可以使用V2。将它们分开。从头开始实施V2会容易得多。在使用V2时,甚至不要考虑V4。只需实施V2。

S3在V2上有自己的部分,位于https://docs.aws.amazon.com/AmazonS3/latest/dev/auth-request-sig-v2.html

IAM文档还在上讨论了V2 https://docs.aws.amazon.com/general/latest/gr/signature-version-2.html

S3实现具有一些古怪的属性,因此请优先选择S3文档。

请注意,在V2中的Signature字段中,绝对要求在base64编码后对+进行网址转义(百分号编码),但是真正的S3会悄悄地忽略您未编码的事实=,可能还有/,因此忽略URL转义要求的实现将生成有时有效而有时无效的签名。如果您使用的第三方服务没有提供有用的SignatureDoesNotMatch请求S3的方式,则您需要针对较早的S3区域中的存储桶测试实现,因为它确实提供了有用的诊断信息,如果您知道如何阅读它们,可以帮助您解决实施问题。