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