使用标准策略设置签名 Cookie - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用标准策略设置签名 Cookie

要使用标准策略设置签名 Cookie,请完成以下步骤。要创建签名,请参阅为使用标准策略的签名 Cookie 创建签名

以下示例显示了在文件的 URL 中使用与分配关联的域名时一个签名 Cookie 的 Set-Cookie 标头:

Set-Cookie: CloudFront-Expires=1426500000; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly

以下示例显示了在文件的 URL 中使用备用域名 example.org 时一个签名 Cookie 的 Set-Cookie 标头:

Set-Cookie: CloudFront-Expires=1426500000; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/images/*; Secure; HttpOnly

如果希望在 URL 中使用备用域名(如 example.com),则必须向分配添加备用域名,而无论是否指定 Domain 属性。有关更多信息,请参阅 备用域名 (CNAME)主题中的 您创建或更新分配时指定的值

为使用标准策略的签名 Cookie 创建签名

要为使用标准策略的签名 Cookie 创建签名,请执行以下操作:

为使用标准策略的签名 Cookie 创建策略声明

设置使用标准策略的签名 Cookie 时,CloudFront-Signature 属性是策略声明的经过哈希处理和签署的版本。对于使用标准策略的签名 Cookie,请不要像在使用自定义策略的签名 Cookie 一样在 Set-Cookie 标头中包含策略声明。要创建策略语句,请完成以下步骤。

为使用标准策略的签名 Cookie 创建策略声明
  1. 使用以下 JSON 格式以及 UTF-8 字符编码构建策略声明。根据指定,准确包括所有标点符号和其他文本值。有关 ResourceDateLessThan 参数的信息,请参阅 在策略声明中为使用标准策略的签名 Cookie 指定的值

    { "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
  2. 删除策略声明中的所有空格(包括制表符和换行符)。您可能需要在应用程序代码的字符串中包括换码符。

在策略声明中为使用标准策略的签名 Cookie 指定的值

为标准策略创建策略声明时,请指定以下值:

资源

包含查询字符串 (如果有) 的基本 URL,例如:

https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

只能为 Resource 指定一个值。

请注意以下几点:

  • 协议 – 该值必须以 http://https:// 开头。

  • 查询字符串参数 – 如果没有查询字符串参数,请省略问号。

  • 备用域名 – 如果在 URL 中指定备用域名 (CNAME),则必须在引用网页或应用程序中的文件时指定备用域名。请勿为文件指定 Amazon S3 URL。

DateLessThan

Unix 时间格式(以秒为单位)和协调通用时间 (UTC) 格式的 URL 过期日期和时间。切勿用引号将该值括起来。

例如,UTC 时间 2015 年 3 月 16 日上午 10 点转换为 Unix 时间格式就是 1426500000。

该值必须与 CloudFront-Expires 标头中的 Set-Cookie 属性的值匹配。切勿用引号将该值括起来。

有关更多信息,请参阅何时 CloudFront 查看已签名的 Cookie 中的到期日期和时间?

标准策略的示例策略声明

当在签名 Cookie 中使用以下示例策略声明时,用户可访问文件 https://d111111abcdef8.cloudfront.net/horizon.jpg,直至 UTC 时间 2015 年 3 月 16 日上午 10 点:

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition": { "DateLessThan": { "AWS:EpochTime": 1426500000 } } } ] }

签署策略声明,以便为使用标准策略的签名 Cookie 创建签名

要为 CloudFront-Signature 标头中的 Set-Cookie 属性创建值,请对在 为使用标准策略的签名 Cookie 创建策略声明 中创建的策略声明进行哈希处理并签署。

有关如何对策略声明进行哈希、签署及编码的更多信息和示例,请参阅以下主题: