我有一个运行良好的算法,可以为Amazon s3 Web服务计算V4 Sign,但是我也需要实现V2 Signer。
这两个符号之间是否有总差异列表?
我发现了这个,但这还不是全部,它需要:https://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html
答案 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区域中的存储桶测试实现,因为它确实提供了有用的诊断信息,如果您知道如何阅读它们,可以帮助您解决实施问题。