跳转至

TypeD

为防止站点资源被非法下载盗用,可选择 TypeA、TypeB、TypeC、TypeD 中的一种。本文介绍 TypeD。开启时只配置 typeD,其余模式置为 null。

算法说明

访问 URL 格式

http://DomainName/FileName?{signParam}=md5hash&{timeParam}=timestamp

注意

  • 访问 URL 中不能包含中文。若 URL 含有中文,请提前做编码转换,计算签名时也使用编码后的路径。
  • 不支持原地址已带 ? 参数的 URL 鉴权。
  • expireTime 单位为秒,最大 630720000。

signParam 示例值 sign,timeParam 示例值 t。URL 中的参数名需与配置一致。

鉴权字段说明

字段 说明
timestamp Unix 时间戳(秒)。由 timeFormat 决定写法:dec 十进制,hex 十六进制小写。URL 与签名串必须相同。
md5hash authAlgorithm 为 md5 时 32 位,为 sha256 时 64 位,小写。md5hash = algorithm(secretKey + uri + timestamp),直接拼接。uri 以 / 开头。
secretKey 主密钥,6~32 位大小写字母或数字。
backupSecretKey 备密钥,规则同主密钥,可不填。主密钥不匹配时再用备密钥计算。
signParam 签名参数名。示例值 sign。
timeParam 时间戳参数名。示例值 t。
timeFormat dec 或 hex,示例值 dec。

鉴权逻辑说明

节点按 timeFormat 解析 timeParam 中的 timestamp,与 expireTime、当前时间比较:

  • timestamp + expireTime 小于当前时间,返回 HTTP 403。
  • 未过期则用 secretKey 计算签名,与 signParam 中的值比较。不一致时再用 backupSecretKey。仍不一致返回 HTTP 403。

配置指南

参数与接口一致。示例 timeFormat 为 dec。若为 hex,把 1790150400 换成 6ab38700 后重新计算。

参数 示例
authAlgorithm md5
secretKey jUL9XKap9ZId7QjP
backupSecretKey AfNFx5YP2oivNdux
signParam sign
timeParam t
expireTime 7200
timeFormat dec
fileExtensions ["*"]
filterType whitelist

生成过程

参数 值
uri /test.jpg
timestamp 1790150400
secretKey jUL9XKap9ZId7QjP

拼接:jUL9XKap9ZId7QjP/test.jpg1790150400

md5hash = md5(...) = 4704615e1a8ca9eda33bb6d22992bd94

鉴权 URL

http://cdn.example.com/test.jpg?sign=4704615e1a8ca9eda33bb6d22992bd94&t=1790150400

注意事项

缓存命中率

节点缓存时忽略 signParam 和 timeParam。该规则只作用于鉴权范围内的文件,优先级高于缓存键规则。例如两者为 sign、t,fileExtensions 为 jpg 且 filterType 为 blacklist,则 jpg 会忽略这两个参数。

回源策略

鉴权通过且未命中缓存时,回源保留 signParam 和 timeParam。源站可忽略,或用同一 secretKey 再校验。