拒绝访问 签名cookie AWS

8
我已经尝试使用aws cloudfront sign package一段时间了,我可以让signedURL在我的cloudfront上工作,这意味着cloudfront已经正确设置。但是,当我尝试在我的cloudfront中使用signed cookies时出现了问题。
为什么不使用signed cookies?并使用postman发送cookies到Cloudfront链接进行测试。
在传递cookie值之前: enter image description here 在传递cookie值之后: enter image description here 谢谢您。
4个回答

4
我找到了答案,在选项参数中,我们必须根据文档定义过期时间。
否则,在我使用的中默认时间将会过期。

总结一下,应该是Unix UTC时间戳示例:1556668800。 - Vaibhav Singh

4

我发现在 canned policies 的资源 URL 中使用通配符无法生效,必须使用自定义策略才能生效。此外,请确保如果您正在为 HTTPS URL 签署 cookie,则应该使用 HTTPS URL 进行测试请求(这很明显,但容易出错)。


这对我来说就是这样了!一旦我在URL中指定了https://以生成cookie,它就起作用了! - Jean-Michel Provencher
你能帮我解决这个问题吗?https://stackoverflow.com/questions/73556541/cloud-front-signed-cookie-resource-path - Ashish

3
根据以上信息,您的已签名 cookie 已经生效。看起来您试图访问的资源不存在或没有权限。
如果您正在访问 S3 存储桶,请确保其设置为公共读取。如果您通过 API 网关进行访问,请确保您可以在没有 CloudFront 的情况下访问这些 URL。

我正在通过API网关访问。它可以在没有CloudFront的情况下访问。 - Lakindu Gunasekara
1
在这种情况下,您尝试访问的资源不存在或没有权限。启用API网关详细日志将为您提供一些了解正在发生的事情。 - Kannaiyan
谢谢,我会尝试。 - Lakindu Gunasekara

0
我曾经遇到过完全相同的错误响应。后来发现在CloudFront-Policy cookie中,我设置了Resource(s)的不正确路径。我毫不知情,原来对于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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接