java/javascript 中的 Cloudfront 签名 Cookie 完整 server-side 实施

Cloudfront Signed Cookies full server-side implementation in java/javascript

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html#private-content-how-signed-cookies-work

指令 1-4 已成功执行,但我不知道如何继续 client-side,在浏览器获得 cookie 后...任何人都可以与我分享一些代码吗?或者指出正确的方向?非常感谢您的帮助。

用户请求object。

用户的浏览器或其他查看器从步骤 4 中获取 name-value 对,并将它们添加到 Cookie header 中的请求中。这是签名的 cookie。

CloudFront 使用 public 密钥验证签名 cookie 中的签名并确认 cookie 未被篡改。如果签名无效,请求将被拒绝。

如果 cookie 中的签名有效,CloudFront 会查看 cookie 中的策略声明(如果您使用固定策略,则构建一个)以确认请求仍然有效。例如,如果您为 Cookie 指定了开始和结束日期和时间,CloudFront 会确认用户在您希望允许访问的时间段内尝试访问您的内容。

如果请求满足策略声明中的要求,CloudFront 将像处理不受限制的内容一样处理您的内容:它确定 object 是否已在边缘缓存中,转发请求如有必要,到原点,returns object 到用户。

这就是我卡住的地方,我得到了签名的 cookie,response.addcookie 响应 header,是这样吗?请求 header 无法添加 header 或添加 cookie...那么我该如何进行下一步?我缺乏与 cookie 决斗的经验,我完成了 signed url 用于 rtmp 分发但不是用于 http 分发(签名 cookie)

将 CloudFront cookie 保存到特定域的浏览器后 即subdomain.mydomain.com.mydomain.com 作为通配符 cookie

然后,对于主机(域)的每个请求,CF cookie 将通过 http 请求发送 headers。

CF会解密cookie中的ticket并验证你的请求,你只需要在CF控制台的CF Origin Identities中指定的CF origin ID给S3 bucket权限即可。

假设您请求了一张图片@https://mycdn.mydomain.com/myimage.jpg which is the CNAME DNS address and edge cache for origin https://s3.amazonaws.com/mybucket/images/myimage.jpg,或者您可能正在使用默认的 cloudfront.net 地址,如果您不使用自己的 CNAME 条目,就会出现这种情况。

然后您的域 CF cookie 将被发送并验证权限,然后对浏览器的响应将是您的图像。

希望对您有所帮助;如果没有,这可能会有一些用处。

http://www.spacevatican.org/2015/5/1/using-cloudfront-signed-cookies/