URL鉴权功能主要用于保护用户站点资源不被非法站点下载盗用。视频点播提供了三种鉴权方式,本文为您详细介绍鉴权方式B的原理和示例说明。
原理说明
鉴权方式B加密URL构成
http://DomainName/timestamp/md5hash/FileName
鉴权字段说明
字段 | 描述 |
DomainName | 视频点播的域名。 |
timestamp | 签算服务器生成鉴权URL的时间,与鉴权URL的默认有效时长共同控制鉴权URL的失效时间。时间点取自签算服务器的“UTC+8”时间,格式为:YYYYMMDDHHMM。 说明 多数情况下,鉴权URL的实际有效时长为视频点播中配置的默认有效时长。有时在签算服务器上配置了鉴权URL的有效时长情况下,此时,timestamp=签算服务器上的Unix时间戳+签算服务器上配置的有效时长;鉴权URL实际有效时长=timestamp+点播配置的鉴权URL的默认有效时长。 |
md5hash | 通过MD5算法计算出的验证字符串。由数字0~9和小写英文字母a~z混合组成,固定长度为32。 |
Filename | 实际回源访问的URL,鉴权时Filename需以正斜线( |
鉴权逻辑说明
CDN服务器接到资源访问请求后,判断最终生成鉴权URL请求中的timestamp
+点播控制台URL鉴权中配置的默认有效时长
是否小于当前时间。
如果
timestamp
+默认有效时长
小于当前时间,服务器判定过期失效,并返回HTTP 403错误。如果
timestamp
+默认有效时长
大于当前时间,则以sstring
方式构造出一个字符串(参考上述表格中sstring
构造方式),然后使用MD5算法算出md5hash
的值,再将计算出的md5hash
值与用户访问请求中携带的md5hash
的值进行比对。结果不一致,鉴权失败,返回HTTP 403错误。
结果一致,鉴权通过,返回资源请求。
说明当鉴权通过时,会去掉URL中与鉴权相关的那部分参数,可以提高缓存命中率,减少回源流量。
实际回源的URL格式:
http://DomainName/FileName
实际生成缓存key的URL格式:
http://DomainName/FileName
鉴权URL示例
通过以下示例说明,您可以准确理解鉴权方式B的实现方式。
示例条件
回源请求对象:
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
的签名字符串。aliyunvodexp12341627747200/video/standard/test.mp4
根据该签名字符串,计算出
md5hash
。md5hash = md5sum("aliyunvodexp12341627747200/video/standard/test.mp4") = 9044548ef1527deadafa49a890a3****
生成鉴权URL。
http://example.aliyundoc.com/1627747200/9044548ef1527deadafa49a890a3****/video/standard/test.mp4
当使用客户端提供的加密URL进行访问时,如果CDN服务器计算出来的md5hash
值与访问请求中带的md5hash
值相同,都为9044548ef1527deadafa49a890a3****,则鉴权通过;反之鉴权失败。