使用签名 URL 和已签名的 Cookie 提供私有内容

 

许多通过互联网分发内容的公司都希望限制对文档、业务数据、流媒体或面向选定用户(例如付费用户)的内容的访问。要使用 CloudFront 安全地提供这种私有内容,可执行以下操作:

  • 要求用户使用特殊的 CloudFront 签名 URL 或签名 Cookie 访问私有内容。

  • 要求您的用户使用 CloudFront URL 访问内容,而不是直接用源服务器(例如 Amazon S3 或私有 HTTP 服务器)上的 URL 访问内容。CloudFront URL 不是必需的,但建议使用,以防止用户绕过在签名 URL 或签名 Cookie 中指定的限制。

签名 URL 包括额外的信息,例如,过期日期和时间,为您提供内容访问方面的更多控制权。该额外信息出现在策略声明中,且是基于固定策略或自定义策略。固定策略和自定义策略之间的差别将在接下来的两节中予以说明。

注意

针对相同分配,您可以使用固定策略创建一些签名 URL 以及使用自定义策略创建一些签名 URL。

为签名 URL 选择标准策略或自定义策略

创建签名 URL 时,需要编写 JSON 格式的策略声明,以指定对签名 URL 的限制,例如,URL 的有效期。可以使用标准策略或自定义策略。以下是标准策略和自定义策略的比较:

描述标准策略自定义策略

可对多个文件重复使用策略声明。要重复使用策略声明,您必须在 Resource 对象中使用通配符。有关更多信息,请参阅 在使用自定义策略的签名 URL 的策略声明中指定的值。)

可指定用户开始访问内容的日期和时间。

是(可选)

可指定用户无法再访问内容的日期和时间。

可指定能够访问内容的用户的 IP 地址或 IP 地址范围。

是(可选)

签名 URL 包括策略的 Base64 编码版本,这会导致更长的 URL。

 

 

签名 URL 的工作方式

下面概述了如何为签名 URL 配置 CloudFront 和 Amazon S3,以及在用户使用签名 URL 请求文件时 CloudFront 如何响应。

  1. 在您的 CloudFront 分配中,指定一个或多个您希望有权限创建签名 URL 的 AWS 账户的可信签署人。

    有关更多信息,请参阅 指定可创建签名 URL 和签名 Cookie 的 AWS 账户 (可信签署人)

  2. 您开发应用程序,以确定用户是否应拥有对您的内容的访问权,以及为您希望限制访问的文件或应用程序的某些部分创建签名 URL。有关更多信息,请参阅以下主题:

  3. 用户请求您要求对其使用签名 URL 的文件。

  4. 应用程序验证用户是否有权访问文件:他们已登录、已付费访问内容或已满足一些其他访问要求。

  5. 您的应用程序创建并返回签名 URL 给用户。

  6. 签名 URL 允许用户下载或流式传输内容。

    此步骤是自动的;用户通常不必做任何额外的事情以访问内容。例如,如果用户是在 Web 浏览器中访问您的内容,那么您的应用程序会将签名 URL 发回浏览器。浏览器立即在无用户干预的情况下使用签名 URL 访问 CloudFront 边缘缓存中的文件。

  7. CloudFront 使用公有密钥验证签名并确认该 URL 没有被篡改。如果签名无效,则请求将被拒绝。

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

    如果请求满足策略声明中的要求,CloudFront 将执行标准操作:确定文件是否已位于边缘缓存中,必要时将请求转发到源,然后向用户返回文件。

注意

签名 CloudFront URL 不能包含额外的查询字符串参数。如果在创建查询字符串后将其添加到签名 URL 中,该 URL 将返回 HTTP 403 状态。

选择签名 URL 的有效时间

您可以使用仅在很短时间内有效(可能只有几分钟)的签名 URL 分配私有内容。—有效时间如此短的签名 URL 适用于出于特定的目的即时向用户分发内容,如按需向客户分发租赁的电影或下载的音乐。如果您的签名 URL 有效期较短,您将可能希望使用您开发的应用程序自动生成它们。当用户开始下载文件或开始播放媒体文件时,CloudFront 将比较 URL 中的过期时间和当前时间,以确定 URL 是否仍然有效。

您也可使用有效时间较长 (可能数年) 的签名 URL 来分配私有内容。有效时间较长的签名 URL 适用于向已知用户分发私有内容,如向投资者分发业务计划或向员工分发培训材料等。您可开发应用程序,以为您产生长期的签名 URL,或您可以使用配置私有内容的工具和代码示例中所列的第三方 GUI工具之一。

CloudFront 何时检查签名 URL 中的过期日期和时间?

CloudFront 何时检查签名 URL 中的过期日期和时间来确定该 URL 是否仍有效,取决于该 URL 是用于 Web 分配还是用于 RTMP 分配:

  • Web 分配 – 在发出 HTTP 请求时,CloudFront 检查签名 URL 中的过期日期和时间。如果客户端刚好在过期时间之前开始下载大型文件,即使在下载过程中到了过期时间,该下载也应该完成。如果 TCP 连接断开,并且客户端试图在过期时间到期后重新开始下载,则下载将会失败。

    如果客户端使用 Range GET 来获取较小的文件,在过期时间到期后发生的任何 GET 请求将会失败。有关 Range GET 的更多信息,请参阅CloudFront 如何处理对象的部分请求(Range GET)

  • RTMP 分配 – 在播放事件开始时,CloudFront 检查签名 URL 中的过期时间。如果客户端在过期时间到期之前开始播放媒体文件,CloudFront 将允许播放整个媒体文件。然而,根据媒体播放器,暂停和重新开始可能触发另一个播放事件。跳到媒体文件中另一个位置将触发另一个播放事件。如果在过期时间到期后发生播放事件,CloudFront 不会提供媒体文件。

    注意

    Adobe 宣布将在 2020 年 12 月 31 日前停用 Flash。因此,Amazon CloudFront 将不再支持 Adobe Flash Media Server,并将在 2020 年 12 月 31 日前弃用实时消息协议 (RTMP) 发行版。有关更多信息,请参阅 Amazon CloudFront 开发论坛上的完整通告

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值