查看文档目录

URL 鉴权

URL 鉴权:给下载或播放链接加上过期时间和签名,节点校验通过才返回内容;含签名串格式、策略配置项和密钥轮换。

作用

URL 鉴权让链接带上过期时间和签名。节点收到请求后,用策略里的密钥重新计算签名,签名对得上、没过期才返回内容,否则返回 403。链接过期后无法再用,也无法被改成别的路径。

使用场景

  • 付费下载、课程视频、安装包:由你的业务服务器生成带签名的链接发给登录用户。
  • 链接只在几分钟或几小时内有效。
  • 把链接绑定到发起请求的客户端 IP,避免转发给他人使用。
  • 限制同一个签名最多使用几次。

在哪里配置

控制台:网站管理下的“URL鉴权”,创建策略并绑定到网站。策略保存后随网站配置自动下发到节点。

配置项

配置项说明
绑定网站策略作用的网站
名称不超过 128 个字符
算法HMAC-SHA256
签名参数链接里放签名的查询参数名
到期参数链接里放过期时间的查询参数名
密钥 ID 参数链接里放密钥 ID 的查询参数名
时钟偏差上限0 到 300 秒,校验过期时间时允许的偏差
签名有效期上限1 到 86400 秒,过期时间距现在不能超过它
签名使用次数上限0 到 1000000,0 表示不限次数
签名排除参数不参与签名的其他查询参数,每行一个
可信代理 CIDR客户端 IP 经过这些代理时,从转发头里取真实 IP,每行一个
绑定客户端 IP开启后签名里包含客户端 IP
启用策略可随时启用或禁用

参数名只能用字母、数字、点、下划线、波浪号和连字符,不超过 64 个字符。

签名怎么算

对下面这段文本做 HMAC-SHA256,结果用十六进制小写写入签名参数:

CDNCA-URL-AUTH/1
tenant_id=<租户 ID>
site_id=<网站 ID>
method=<请求方法>
path=<路径>
query=<排序后的其他查询参数>
expires=<过期时间 Unix 秒>
key_id=<密钥 ID>
client_ip=<客户端 IP,未绑定 IP 时为空>

每个值做百分号编码;查询参数里去掉签名、到期、密钥 ID 三个参数和“签名排除参数”后,按名称和值排序再编码。链接形如 /video/a.mp4?expires=1767225600&kid=k1&sign=<签名>,参数名以策略里设置的为准。

密钥管理

  • 创建策略时密钥只显示一次,关闭后无法再查看,请立即保存到你的凭据管理器。
  • “轮换密钥”:当前密钥进入平滑轮换窗口,新旧两个密钥都能通过校验,新密钥同样只显示一次。
  • “撤销前一密钥”:使用前一个密钥的请求立即失效。
  • 禁用策略后,网站不再要求签名。

常见问题

请求返回 403

常见原因:缺少签名、到期或密钥 ID 参数;链接已过期,或过期时间离现在超过“签名有效期上限”;请求方法、路径或查询参数与签名时不一致;开启了绑定客户端 IP 而请求来自另一个 IP;签名使用次数超过上限。

请求返回 503

节点上还没有这个策略版本的密钥,或用于记录使用次数的状态暂时不可用。刚创建、刚轮换后短时间内可能出现,稍后会随配置下发恢复。

签名对不上

按“签名怎么算”逐项核对:路径和查询参数要做百分号编码,查询参数要去掉签名相关参数并按名称排序,过期时间是 Unix 秒,方法大小写与请求一致。

客户端经过了代理

在“可信代理 CIDR”里填这些代理的网段,节点才会从转发头里取真实客户端 IP 参与签名。