原理说明
- 鉴权方式C访问URL构成:
http://DomainName/FileName?auth_key=md5hash×tamp=timestamp。
下文以如下URL作为示例:http://test.ctyun.cn/test/test.mp4?auth_key=md5hash×tamp=timestamp。
- URL鉴权字段说明:
字段 | 描述 |
---|---|
DomainName | CDN加速域名。 |
Filename | 实际回源访问的URI,即域名后面"/"开头截止到"?"之前的部分。即如上示例中的:/test/test.mp4。 |
auth_key | 设定的鉴权参数名,默认为auth_key,也可自定义。 |
timestamp | 1. 鉴权URL生成的时间,即:鉴权开始时间,值为从1970年1月1日0点至当前时间的总秒数 ,是十进制整数。 2. 与鉴权URL有效时长共同控制鉴权URL的失效时间。鉴权URL实际有效期=timestamp+CDN配置的鉴权URL有效时长。 |
md5hash | 通过MD5算法计算出的32位字符串。计算公式如下:md5hash = md5sum(KeyFilenameTimestamp)。 1. md5加密元素分隔符默认无符号,也可自定义。 2. 这里的key为用户设定的鉴权秘钥,长度6到32,由大小写字母与数字组成,例如:ctcdnkey123。 |
- 校验方法
CDN服务器接收到请求后,会按照如下步骤进行校验:
- 鉴权参数校验:如果没有携带鉴权参数,认为请求非法,返回HTTP 403错误。
- 时间校验:判断系统当前时间是否在区间[timestamp,timestamp+有效时间]内。超出该区间,认为过期失效并返回HTTP 403错误。
- 加密串校验:时间校验通过后,比对CDN服务器计算出来的md5hash值与访问请求中带的md5hash值是否相同,结果一致则认为鉴权通过并返回文件,否则鉴权失败返回HTTP 403错误。
配置示例
- 配置页面
- 配置参数说明
参数名 | 说明 | 示例 |
---|---|---|
加密key | 设定的鉴权密钥,多个以英文逗号分割,最多支持3个。 | 123 |
加密元素分隔符 | 默认无符号,可自定义。 | |
时间戳加密参数 | 默认timestamp,可自定义。 | timestamp |
MD5加密参数 | 默认auth_key,可自定义。 | auth_key |
鉴权URL有效时长 | 判断时间戳是否过期,单位秒。 | 300 |
- 示例说明
- 回源请求URL:http://test.ctyun.cn/test/test.mp4。
- 根据配置,加密key为123,生成鉴权URL时间为:2023年11月1日,转化为十进制的整型数值为:1698768000。
- 需加密的字符串:123/test/test.mp41698768000。
- 加密字符串:md5hash=md5sum(123/test/test.mp41698768000)=bab878e0fb91b8b9a4058fda34d1ebb6。
- 鉴权URL:http://test.ctyun.cn/test/test.mp4?auth_key=bab878e0fb91b8b9a4058fda34d1ebb6×tamp=1698768000。
- CDN服务器接收到请求后,进行校验:
- 是否携带鉴权参数auth_key。如果没有携带认为请求非法,返回HTTP 403错误。
- 判断系统当前时间是否在2023年11月1日0时0分0秒-2023年11月1日0时5分0秒之间,超过该区间则返回HTTP 403错误。
- 时间校验通过后,比对CDN服务器计算出来的md5hash值与访问请求中带的md5hash值都是bab878e0fb91b8b9a4058fda34d1ebb6则认为鉴权通过并返回文件,否则鉴权失败返回HTTP 403错误。
注意事项
开启鉴权方式C,请求的URL会携带鉴权参数,缓存key和回源url默认也会增加对应参数,为避免缓存命中率和回源受到影响需增加缓存及回源配置。
- 缓存配置:忽略鉴权参数缓存,详情请见:缓存key设置。
配置示例:忽略auth_key和timestamp参数缓存。
注意CDN缓存过期时间设置中,默认开启“去问号缓存”,此情况下开启鉴权方式A后,无需额外设置忽略鉴权参数缓存。相关文档详情请见:缓存过期时间设置。
- 回源配置:忽略鉴权参数回源,详情请见:回源参数改写。
配置示例:回源删除auth_key和timestamp参数。