通过控制台配置URL鉴权,可以保护用户上传到视频点播的内容不被非法站点下载盗用。本文主要介绍URL鉴权的逻辑和鉴权A方法。
背景信息
在视频点播分发的内容默认为公开资源,用户拿到URL后均可访问,为防止站点资源被恶意下载盗用,除了通过Referer防盗链、IP黑白名单等防控方式,您还可以采用URL鉴权,自行配置校验鉴权URL中的加密串和时间戳,更安全有效地保护源站资源。视频点播仅支持使用鉴权A的方式进行鉴权加密。
URL鉴权逻辑
视频点播的URL鉴权功能通过阿里云CDN加速节点与客户资源站点配合,形成了更为安全可靠的源站资源防盗方法。主要由以下几个部分配合:
- 源站应用服务器:根据鉴权URL生成规则(包括鉴权算法、密钥)生成鉴权URL返回给客户端。
- 客户端:发起资源请求,并发送鉴权URL给CDN节点进行验证。
- CDN节点:对鉴权URL中的鉴权信息(鉴权字符串、时间戳等)进行验证。

鉴权过程如下:
- 视频点播客户在源站应用服务器配置鉴权URL的生成规则(包括鉴权算法和密钥)。
例如鉴权URL为:http://DomainName/timestamp/md5hash/FileName。
- 客户端访问源站应用的页面时,源站应用服务器将会按照鉴权URL的生成规则生成鉴权URL(URL生成规则请参见鉴权方式A说明),并且把鉴权URL包含在应用页面上返回给客户端(图中2和3)。
- 客户端使用鉴权URL向CDN加速节点发起资源请求。
- CDN加速节点对鉴权URL中的鉴权信息(包括鉴权字符串、时间戳等)进行验证,判断请求的合法性。
- 鉴权失败,拒绝访问请求。
- 鉴权通过,正常响应合法请求。
说明- 若CDN节点没有缓存资源,CDN节点回源前,会去掉鉴权URL中的鉴权参数,将鉴权URL还原为原始URL(例如:
http://DomainName/FileName
),再使用原始URL生成缓存key或者发起回源请求。 - 您的请求URL经过CDN鉴权后,URL中的特殊字符,例如
=
、+
等会被转义。
鉴权方式A说明
原理说明
- 鉴权方式A加密URL构成
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
- 鉴权字段说明
字段 描述 DomainName 视频点播的域名。 Filename 实际回源访问的URL,鉴权时Filename需以正斜线( /
)开头。auth_key 您设定的鉴权密钥。 timestamp 签算服务器生成鉴权URL的时间,与鉴权URL的默认有效时长共同控制鉴权URL的失效时间。时间点取自签算服务器的Unix时间戳(Unix时间戳是从UTC时间1970年01月01日00时00分00秒到现在的总秒数,是十进制的整型正数,固定长度为10,与时区无关)。 说明 多数情况下,鉴权URL的实际有效时长为配置的默认有效时长。有时在签算服务器上配置了鉴权URL的有效时长情况下,此时,timestamp=签算服务器上的Unix时间戳+签算服务器上配置的有效时长;鉴权URL实际有效时长=timestamp+点播配置的鉴权URL的默认有效时长。rand 随机数,一般取值为0。如果要确保每次生成的URL不同,建议使用UUID,不能包含中划线( -
),例如:477b3bbc253f467b8def6711128c****。uid 用户ID,暂未使用(设置成0即可)。 md5hash 通过MD5算法计算出的验证字符串。由数字0~9和小写英文字母a~z混合组成,固定长度为32。 md5hash
的值通过以下字符串计算得到。sstring = "URI-timestamp-rand-uid-PrivateKey" md5hash = md5sum(sstring)
- URI:用户的请求对象相对地址,不包含参数,如:/Filename。
- PrivateKey:视频点播控制台配置的主Key或备Key,二者皆可。配置方法请参见开启鉴权并配置鉴权URL。
- md5sum:表示计算MD5值,请使用开发语言对应的函数。
- 鉴权逻辑说明
视频点播服务器接到资源访问请求后,判断最终生成鉴权URL请求中的
timestamp
+控制台URL鉴权中配置的默认有效时长
是否小于当前时间。- 如果
timestamp
+默认有效时长
小于当前时间,服务器判定过期失效,并返回HTTP 403错误。 - 如果
timestamp
+默认有效时长
大于当前时间,则以sstring
方式构造出一个字符串(参考上述表格中sstring
构造方式),然后使用MD5算法算出md5hash
的值,再将计算出的md5hash
值与用户访问请求中携带的md5hash
的值进行比对。- 结果一致,鉴权通过,返回资源请求。
说明 当鉴权通过时,会去掉URL中与鉴权相关的那部分参数,可以提高缓存命中率,减少回源流量:
- 实际生成缓存key的URL格式:
http://DomainName/FileName
- 实际回源的URL格式:
http://DomainName/FileName
- 实际生成缓存key的URL格式:
- 结果不一致,鉴权失败,返回HTTP 403错误。
- 结果一致,鉴权通过,返回资源请求。
- 如果
鉴权URL拼接示例说明
通过以下示例说明,您可以准确理解鉴权方式A的实现方式。
示例条件
- 回源请求对象:
http://example.aliyundoc.com/video/standard/test.mp4
注意 如果您的回源请求对象中有中文汉字,请先对其进行URL转码(即Encode),再进行鉴权URL的拼接。 - 设置密钥(PrivateKey)为:aliyunvodexp1234。
- 签算服务器生成鉴权URL的时间(timestamp)为:2021-08-01 00:00:00(UTC+8),转换为十进制的整形数值为1627747200。
拼接流程
- 构造一个用于计算
md5hash
的签名字符串。/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234
- 根据该签名字符串,计算出
md5hash
。HashValue = md5sum("/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234") = 0e9048c8c7de46b6015618f42de7****
- 生成鉴权URL。
http://example.aliyundoc.com/video/standard/test.mp4?auth_key=1627747200-0-0-0e9048c8c7de46b6015618f42de7****
当用户使用鉴权URL进行访问时,如果视频点播服务器计算出来的md5hash
值与访问请求中带的md5hash
值相同,都为0e9048c8c7de46b6015618f42de7****
,则鉴权通过,反之鉴权失败。
URL鉴权使用方法
- 开启URL鉴权并配置鉴权URL。
在视频点播控制台配置并开启URL鉴权,详细操作,请参见开启鉴权并配置鉴权URL。
- 获取鉴权URL。
- 资源都在视频点播控制台中:开启URL鉴权后,在视频点播控制台中的资源会自动生成带时效的鉴权URL,您也可以通过调用获取音视频播放地址接口获取鉴权URL。
说明 开启URL鉴权后,视频、音频、封面、截图等地址都会进行鉴权。
- 资源不在视频点播控制台中:开启URL鉴权后,您可以使用鉴权A方式进行鉴权URL的拼接,生成动态的鉴权URL。更多信息,请参见鉴权方式A说明、鉴权URL拼接示例说明。
- 资源都在视频点播控制台中:开启URL鉴权后,在视频点播控制台中的资源会自动生成带时效的鉴权URL,您也可以通过调用获取音视频播放地址接口获取鉴权URL。