拒绝访问:根据策略无效:策略已过期

时间:2018-04-06 17:09:49

标签: amazon-s3 http-post

尝试使用http post进行浏览器上传时,出现错误:

(Error)
(Code)AccessDenied(/Code)
(Message) Invalid according to Policy: Policy expired.
(/Message)
(RequestId) 6C79F2BC4E51766A (/RequestId)
(HostId) 
4uzKezeAmS/y0EAz47QevCu9Jh/3ivPxYRbOYn/Df+JoQnAgXNK+faFOmkDSlOukwynxUPzp4Uk= 
(/HostId)
(/Error)

我尝试更改系统时钟时间, 我检查过期时间设置为当前日期,未来日期最长为5分钟,1天,1个月,1年

邮政政策是:

{  "expiration": "2019-06-06T13:45:00.000Z",
  "conditions": [
{"bucket": "tokendatabase"},
["starts-with", "$key", "user/user1/"],
{"acl": "public-read-write"},
{"success_action_redirect": ""},
["starts-with", "$Content-Type", "image/"],
{"x-amz-meta-uuid": "14365123651274"},
{"x-amz-server-side-encryption": "AES256"},
["starts-with", "$x-amz-meta-tag", ""],
{"x-amz-credential": "<Access KEY>/20180122/us-east-2/s3/aws4_request"},
{"x-amz-algorithm": "AWS4-HMAC-SHA256"},
{"x-amz-date": "20180122T000000Z" }
]
}

1 个答案:

答案 0 :(得分:0)

您告诉服务您几乎在三个月前签署了此政策:

{"x-amz-credential": "<Access KEY>/20180122/us-east-2/s3/aws4_request"},
{"x-amz-date": "20180122T000000Z" }

现已过期,因为2018-01-22的凭证仅在2018-01-30之前有效。

  

您在签名计算中使用的签名密钥有效期最长为七天。

     

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

以上引用的来源来自文档中的不同上下文,但在此处适用。与签名V4一起使用的签名密钥与您签署请求的日期(或您声称在此情况下的日期),AWS区域和特定服务相关联,并且在任何其他上下文中均无效,包括过去7天以上(如果在&#34;未来使用,&#34;相对于您提供的日期)。

x-amz-credentialx-amz-date的值需要相对于日期组件相互匹配,并且应该在您签署策略时从系统时钟派生。