允许在S3预签名的URL中允许未知的键值对



我有一个用例,我想为给定的对象密钥生成s3 pre签名的URL,但如果添加了一些随机请求参数,则希望URL工作。是否有一种方法可以使用AWS Java SDK或SDK中的其他类别的GeneratePresignEdurlrequest?

示例

如果我的预签名的URL是http://test.s3.amazonaws.com/sdfasdlkfjsd,我请求http://test.s3.amazonaws.com/sdfasdlkfjsd?random = random = 100& amazonaws.com/sdfasdlkfjsd?希望能够下载该内容忽略随机请求参数。目前,我得到了这个

<Error>
    <Code>SignatureDoesNotMatch</Code>
    <Message>
        The request signature we calculated does not match the signature you provided. Check your key and signing method.
    </Message>
    ....
</Error>

预先签名的URL被设计为篡改。任何改变URL元素的修改都使签名无效。那是设计的,与Java SDK中的任何限制无关。

您当然可以在签署URL之前添加自定义值。S3访问日志文档建议以x-开头,而V4签名算法肯定支持它,但是尚不清楚如何使用Java SDK执行此操作。使用JavaScript SDK,有一个简单的黑客涉及事件挂钩。

交替地将云方面放在水桶前。 CloudFront使用自定义策略的预先签名的URL支持Resource字段中的通配符,这是指定完整URL的字段,在自定义策略中。

最新更新