访问拒绝签名的Cookie AWS

时间:2017-09-05 06:04:21

标签: amazon-web-services amazon-cloudfront amazon-signed-cookie

我一直在尝试aws cloudfront sign包,我可以将signedURL工作到我的cloudfront,这意味着cloudfront已正确设置。但是当我尝试在我的cloudfront中使用签名的cookie时会出现问题。

不使用已签名的Cookie可能是什么原因?并使用邮递员将Cookie发送到Cloudfront链接以进行测试。

在传递cookie值之前 enter image description here

传递cookie值后

enter image description here

谢谢

4 个答案:

答案 0 :(得分:2)

我找到答案,在选项参数中,我们必须根据documentation定义到期时间。

否则默认时间将在我使用的library中过期。

答案 1 :(得分:1)

您签名的Cookie正在根据上述信息运行。看起来您尝试访问的资源不存在或权限被拒绝。

如果您要访问S3存储桶,请确保将其设置为公共读取。如果您通过API网关访问,请确保您可以在没有云端的情况下访问这些URL。

答案 2 :(得分:1)

固定策略的资源网址中的通配符对我不起作用。我必须对通配符使用自定义策略才能工作。另外,请确保是否为HTTPS URL签名cookie,并且正在使用HTTPS URL测试请求(显而易见,但很容易搞乱)

答案 3 :(得分:0)

我有完全相同的错误响应。原来在CloudFront-Policy Cookie中,我为资源设置了错误的路径。我不知道这对于CloudFront知道域甚至协议都很重要。

在我的情况下,我将策略资源设置为相对路径,即错误!见下文,我的意思是错误的:

path_to_my_resources/*

如果要通过资源为您生成的CloudFront域访问资源,则资源的外观如下:

http://somedomain.cloudfront.net/path_to_my_resources/*

或用于HTTPS

https://somedomain.cloudfront.net/path_to_my_resources/* 

最后,如果要通过自己的域(CNAME)访问它,则应在资源属性中使用它:

https://example.com/path_to_my_resources/* 

这是对我有用的最终政策声明:

{
   "Statement":[
      {
         "Resource":"https://example.com/path_to_my_resources/*",
         "Condition":{
            "IpAddress":{
               "AWS:SourceIp":"127.0.0.1/32"
            },
            "DateLessThan":{
               "AWS:EpochTime":1554469015
            }
         }
      }
   ]
}

这是链接,在这里您可以阅读有关使用自定义策略的签名Cookie的策略声明的更多信息:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html#private-content-custom-policy-statement-signed-cookies-examples