鉴权方式 C

最近更新时间:2026-06-29 09:49:01

我的收藏

鉴权 URL 格式

http://Hostname/md5hash/timestamp/Filename
https://Hostname/md5hash/timestamp/Filename

参数说明

字段
说明
Hostname
站点加速域名。
Path
资源访问路径,鉴权时需以/开头。
timestamp
以十六进制形式表示的 Unix 时间戳(从 UTC 时间1970年01月01日00时00分00秒到现在的总秒数,其定义与所在时区无关。)
md5hash
通过 MD5 算法计算出的固定长度为32位的字符串:
算法:MD5(密钥+ Path + timestamp )。注:计算时,十六进制的 timestamp 需过滤掉进制数标识 0x。
鉴权逻辑:若请求未过期,则节点比较此字符串值与请求 URL 中携带的 md5hash 值:两值相同,鉴权通过,响应请求;两值不同,鉴权失败,返回 403。

配置示例

假设请求 URL https://www.example.com/foo.jpg 使用鉴权方式 C,由于该方式会将鉴权信息 /{md5hash}/{timestamp} 拼接在资源真实路径之前,请求到达节点时的实际 URL Path 为 /{md5hash}/{timestamp}/foo.jpg。规则引擎的「URL Path」匹配作用于携带鉴权前缀的原始请求路径,而非业务真实路径。
因此匹配条件需使用「正则匹配」,将鉴权前缀一并纳入;不能按业务真实路径(如 URL Path 等于 /foo.jpg)配置,否则请求无法命中规则。配置示例如下:




获取鉴权参数

Path:/foo.jpg
timestamp:服务端生成鉴权 URL 的时间为2024-07-15 15:43:06(UTC+8),转换为十六进制(Unix 时间戳)格式的数值为6694d30a
密钥:DvYmqE81E1F9R791H6lmht
md5hash:MD5(密钥+ Path + timestamp)= MD5(DvYmqE81E1F9R791H6lmht/foo.jpg6694d30a)= 6688749e8906a726c12fe1be3aacd016

客户端请求生成的鉴权 URL

https://www.example.com/6688749e8906a726c12fe1be3aacd016/6694d30a/foo.jpg

节点鉴权

当节点服务器接收到客户端通过加密 URL 发出的请求时,解析出 URL 中的 timestamp 参数,加上配置的有效时长“1秒”,与当前时间比较:
1. 若当前时间超过“timestamp + 有效时长”时间,则为过期请求,直接返回 403。若当前时间未超过“timestamp + 有效时长”时间,则请求未过期,继续第 2 步。
2. 节点服务器通过获取的鉴权参数计算 md5hash 值,与请求 URL 中携带的 md5hash 值做比较:两值相同,鉴权通过,响应请求;两值不同,鉴权失败,返回 403。
3. 节点鉴权通过后会自动剥离 /{md5hash}/{timestamp} 前缀,使用业务真实路径 /foo.jpg 回源。