访问拒绝签名的 Cookie AWS

Access Denied Signed Cookies AWS

我尝试使用 aws cloudfront sign 包已经有一段时间了,我可以在我的 cloudfront 上使用 signedURL,这意味着 cloudfront 设置正确。但是当我尝试在我的云端使用签名的 cookie 时出现问题。

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

在传递 cookie 值之前

传递 cookie 值后

谢谢

您的签名 cookie 正在根据上述信息工作。您尝试访问的资源似乎不存在或权限被拒绝。

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

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

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

固定策略的资源 URL 中的通配符对我不起作用。我必须使用通配符的自定义策略才能工作。此外,请确保如果您正在为 HTTPS url 签署 cookie,那么您正在使用 HTTPS url 测试您的请求(显而易见但容易搞砸)

我有完全相同的错误响应。结果在 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
            }
         }
      }
   ]
}

这里是 link,您可以在其中阅读有关使用自定义策略的签名 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