URL鉴权功能主要用于保护用户站点资源不被非法站点下载盗用。阿里云CDN为您提供了三种鉴权方式,本文为您详细介绍鉴权方式B的原理和示例说明。

鉴权流程

  • CDN开启URL鉴权:鉴权通过后,会去掉客户端发起的请求URL中的鉴权参数,把客户端发起的请求URL(带鉴权参数)还原为原始URL,然后使用原始URL来生成缓存key或者发起回源请求。开启
  • CDN关闭URL鉴权:CDN关闭URL鉴权,与此同时,客户端上发起的请求URL里面也要去掉鉴权参数,否则,如果CDN上的URL鉴权功能已经关闭了,但是客户端发起的请求URL里面依然携带鉴权参数的话,就会导致CDN无法把客户端发起的请求URL(带鉴权参数)还原为原始URL,最终所有请求都无法命中缓存,均会透传回源站,导致源站的流量大涨,同时也会增加源站的流量费用。关闭

原理说明

访问加密URL格式:
http://DomainName/timestamp/md5hash/FileName
当鉴权通过时,会去掉URL中与鉴权相关的那部分参数(提高缓存命中率,减少回源流量):
  • 实际生成缓存key的URL格式:
    http://DomainName/FileName
  • 实际回源的URL格式:
    http://DomainName/FileName
鉴权字段描述如下表所示。
字段 描述
DomainName CDN站点的域名。
timestamp 资源失效时间,作为URL的一部分,同时作为计算md5hash的一个因子,格式为: YYYYMMDDHHMM,有效时间1800s。

例如您设置访问时间为2020-08-15 15:00:00,则链接的真正失效时间为2020-08-15 15:30:00。

md5hash 通过md5算法计算出的验证串,由数字0-9和小写英文字母a-z混合组成,固定长度32。
Filename 实际回源访问的URL,鉴权时Filename需以/开头。

示例说明

通过以下示例说明,您可以准确理解鉴权方式B的实现方式。
  1. 回源请求对象。
    http://cdn.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
  2. 密钥为:aliyuncdnexp1234。
  3. 访问源服务器时间为: 201508150800。
  4. CDN服务器构造一个用于计算Hashvalue的签名字符串。
    aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
  5. 服务器根据签名字符串Hashvalue计算md5hash
    md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0
  6. 加密URL请求。
    说明 如果您加密URL中有中文汉字,请先对其进行URL转码(即encode),然后执行该步骤。
    http://cdn.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3

如果计算出来的md5hash值与请求中带的md5hash值相同,都为9044548ef1527deadafa49a890a377f0,则鉴权通过;反之鉴权失败。