在CDN分发的内容默认为公开资源,用户拿到URL后均可访问,为防止站点资源不被恶意下载盗用,除了通过Referer防盗链、IP黑白名单等防控方式,您还可以采用URL鉴权,自行配置校验鉴权URL中的加密串和时间戳,更安全有效地保护源站资源。本文主要介绍鉴权URL的逻辑、开启或关闭鉴权、以及验证方法。

您可以通过以下内容了解和使用URL鉴权

鉴权逻辑

URL鉴权功能通过阿里云CDN加速节点与客户资源站点配合,形成了更为安全可靠的源站资源防盗方法。主要由以下几个部分配合:
  • 源站应用服务器:根据鉴权URL生成规则(包括鉴权算法、密钥)生成鉴权URL返回给客户端。
  • 客户端:发起资源请求,并发送鉴权URL给CDN节点进行验证。
  • CDN节点:对鉴权URL中的鉴权信息(鉴权字符串、时间戳等)进行验证。
鉴权URL
  1. CDN客户在源站应用服务器配置鉴权URL的生成规则(包括鉴权算法和密钥)。

    假设鉴权URL为:http://DomainName/timestamp/md5hash/FileName

  2. 客户端访问源站应用的页面时,源站应用服务器将会按照鉴权URL的生成规则生成鉴权URL,并且把鉴权URL包含在应用页面上返回给客户端(图中2和3)。
  3. 客户端使用鉴权URL向CDN加速节点发起资源请求。
  4. CDN加速节点对鉴权URL中的鉴权信息(包括鉴权字符串、时间戳等)进行验证,判断请求的合法性。
    • 鉴权失败,拒绝访问请求。
    • 鉴权通过,正常响应合法请求。
      说明
      • 若CDN节点没有缓存资源,CDN节点回源前,会去掉鉴权URL中的鉴权参数,将鉴权URL还原为原始URL(例如:http://DomainName/FileName),再使用原始URL生成缓存key或者发起回源请求。
      • 您的请求URL经过CDN鉴权后,URL中的特殊字符,例如=+等会被转义。

配置鉴权URL并开启鉴权

注意
  • 请确保您已经在您的源站应用服务器配置了鉴权URL的生成规则(包括鉴权算法、密钥)。
  • CDN配置的URL鉴权逻辑必须与您的源站应用服务器的URL鉴权逻辑保持一致。
  1. 登录CDN控制台
  2. 在左侧导航栏,单击域名管理
  3. 域名管理页面,单击目标域名对应的管理
  4. 在指定域名的左侧导航栏,单击访问控制
  5. 单击URL鉴权页签。
  6. 鉴权URL设置区域,单击修改配置
  7. 打开URL鉴权开关,配置URL鉴权信息。
    URL鉴权
    参数 说明
    鉴权类型
    阿里云CDN提供了3种鉴权签名计算方式。您可以根据访问加密URL格式,选择合适的鉴权方式,实现对源站资源的有效保护。URL鉴权类型如下:
    说明 URL鉴权错误会返回403报错:
    • MD5计算类错误

      例如:X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760be

    • 时间类报错

      例如:X-Tengine-Error:denied by req auth: expired timestamp=1439469547

    主KEY 输入鉴权方式对应的主用密码。
    备KEY 输入鉴权方式对应的备用密码。
    鉴权URL有效时长 CDN配置的鉴权URL有效时长,用户可在(timestamp+CDN上鉴权URL有效时长)时间区间内访问CDN,超出该区间,鉴权失效。
    • 单位:秒
    • 取值范围:1~31536000
    • 默认值:1800(30分钟)
    • 示例:例如签算服务器生成鉴权URL的时间(timestamp)为2020-08-15 15:00:00(UTC+8),CDN上鉴权URL有效时长为1800秒,则鉴权URL失效时间为2020-08-15 15:30:00(UTC+8)。
  8. 单击确定

验证鉴权URL正确性

为保证服务器正确实现了鉴权逻辑,配置鉴权URL后,建议您在CDN控制台生成对应的鉴权URL,校验鉴权URL的正确性。

  1. 生成鉴权URL区域,配置原始URL和鉴权信息。
    生成鉴权URL
    参数 说明
    原始URL 输入完整的原始URL地址,例如:https://www.aliyun.com
    鉴权类型

    按照您在配置鉴权URL的配置,选择URL鉴权类型。

    鉴权KEY 按照您在配置鉴权URL的配置,输入您配置的主KEY备KEY
    鉴权URL有效时长 按照您在配置鉴权URL的配置,输入URL鉴权的有效时长,单位为秒。
  2. 单击开始生成,即可获得鉴权URLTimestamp
    URL鉴权

关闭URL鉴权

注意 如果CDN上的URL鉴权功能已经关闭了,但是客户端发起的请求URL里面依然携带鉴权参数的话,就会导致CDN无法把客户端发起的请求URL(带鉴权参数)还原为原始URL,最终所有请求都无法命中缓存,均会透传回源站,导致源站的流量大涨,同时也会增加源站的流量费用。因此,如果您需要停止使用URL鉴权,需同时关闭源站和CDN的URL鉴权功能。
关闭鉴权
  1. CDN控制台URL鉴权设置区域,单击修改配置,关闭URL鉴权开关。
  2. 在您的应用服务器中去掉请求URL的鉴权参数。