鉴权方式 V

最近更新时间:2024-08-20 14:21:41

我的收藏

功能简介

为了强化视频场景的权限控制能力,EO 推出了 TypeV 鉴权的解决方案。该方案具备的能力如下:
支持在 URL 中指定过期时间,他人获取后无法长期使用;
支持在 URL 中将客户端 IP 纳入签名计算,他人获取后无法访问;
支持在 URL 中指定试看时长,实现试看功能;
支持在 URL 中指定 Referer 黑白名单;
支持在 URL 中指定从某个 unix 时间戳开始播放视频,实现伪直播功能;
开发者使用密钥KEY对 URL 签名,并在 URL 中带上签名结果。只要用户密钥不泄露,其他用户无法伪造加密 URL;
EdgeOne 节点检查加密 URL 中的参数和签名,对访问请求进行控制。如果请求检查不通过,则返回 403 响应码。

鉴权参数

如下为鉴权 URL 中各个参数的含义和取值方法。
参数名
必选
说明
KEY
开启 TypeV 鉴权时填写的密钥。由大小写字母(a -Z)、数字(0-9)以及特殊字符组成,长度在8-20个字符之间。支持在控制台中随机生成。
Path
原始 URL 的 PATH 部分。如果原始 URL 为 http://example.vod2.myqcloud.com/dir1/dir2/myVideo.mp4,则 Path 为 /dir1/dir2/myVideo.mp4。
t
访问 URL 的过期时间戳,单位为秒,以 Unix 时间的十六进制小写形式表示。
过期后该 URL 将不再有效,返回 403 响应码。考虑到机器之间可能存在时间差,鉴权 URL 的实际过期时间一般比指定的过期时间长 5 分钟,即额外给出 300 秒的容差时间。
建议过期时间戳不要过短,确保在有效时间内用户可完成下载或视频播放。
exper
试看时长,单位为秒,以十进制表示,不填或者填 0 表示不试看(即返回完整视频)。
试看时长不要超过视频原始时长,否则可能导致播放失败。
us
链接标识,用于随机化一个鉴权 URL,增强链接的唯一性。
建议每次生成鉴权 URL 时,指定一个随机的 us 值。
plive
单位为秒,以 Unix 时间的十六进制小写形式表示。用于实现伪直播功能,实现从指定的时间开始播放视频。
示例:若 plive 的值为 669f9b40,则代表对应加密请求的资源需要在 2024-07-23 20:00:00 后才允许访问。
whref
允许访问的域名来源列表,支持 1 条 - 10 条,用半角逗号分隔。域名前不要带协议名(http://和 https://),域名为完整匹配(如填写 abc.com,则仅能匹配到 abc.com,无法匹配到 abc.com.cn),且支持通配符(如 *.abc.com)。
bkref
禁止访问的域名来源列表,支持 1 条 - 10 条,用半角逗号分隔。域名前不要带协议名(http://和 https://),域名为完整匹配(如填写 abc.com,则仅能匹配到 abc.com,无法匹配到 abc.com.cn),且支持通配符(如 *.abc.com)。
whip
允许访问的客户端 IP 列表,支持 1 个 - 10 个,多个用半角逗号分隔。客户端 IP 支持 IP 以及 IP 段,如 192.168.0.0 或 192.168.0.0/24。其中,0.0.0.0/0 代表所有 ipv4,::/0 代表所有 ipv6。
客户端 IP 通过 X-Forwarded-For 头部 获取,当该头部值有多个时,则取第一个值。
bkip
禁止访问的客户端 IP 列表,支持 1 个 - 10 个,多个用半角逗号分隔。客户端 IP 支持 IP 以及 IP 段,如 192.168.0.0 或 192.168.0.0/24。其中,0.0.0.0/0 代表所有 ipv4,::/0 代表所有 ipv6。
客户端 IP 通过 X-Forwarded-For 头部 获取,当该头部值有多个时,则取第一个值。
sign
防盗链签名,以 40 个字符长的十六进制数表示,用于校验鉴权 URL 的合法性,签名校验失败将返回 403 响应码。计算方式参考:签名计算公式
说明:
对于 VOD 源站,支持上述全部参数,对于非 VOD 源站,不支持 us、plive 参数。
对于 m3u8 的请求,EdgeOne 会按照 ts 的路径自行生成鉴权参数并进行 ts URL 的改写,客户端只需要生成 m3u8 的鉴权 URL 即可。

签名计算公式

sign = sha1(KEY + Path + t + plive + exper + us + whref + bkref + whip + bkip)
注意:
公式中的+代表字符串拼接,选填参数可以为空字符串;
进行签名计算时,各参数必须严格按照签名计算公式的顺序,如果顺序不正确则会生成错误的签名。

鉴权 URL 生成规则

在原始 URL 尾部,以 QueryString 的方式加入鉴权参数,形如:
http://example.vod2.myqcloud.com/dir1/dir2/myVideo.mp4?t=[t]&exper=[exper]&us=[us]&whref=[whref]&whip=[whip]&sign=[sign]

配置示例

假设原始 URL 是 http://example.vod2.myqcloud.com/dir1/dir2/myVideo.mp4。该开发者配置了 TypeV 鉴权,生成的密钥是24FEQmTzro4V5u3D5epW,生成的随机字符串为 72d4cd1101
下面分别对“视频播放地址有效时间控制”、“同一鉴权 URL 仅允许一个客户端 IP 播放”和“视频允许播放客户端 IP”的场景,介绍如何生成鉴权 URL。


示例1:播放地址有效时间控制

若您需要为这个视频生成鉴权 URL,URL 的过期时间是 2018 年 01 月 31 日 20:00(Unix 时间为 1517400000),请参照如下步骤。

步骤1:确定鉴权参数

参数名
取值
说明
KEY
24FEQmTzro4V5u3D5epW
开发者开通 Key 防盗链时选择的密钥
Path
/dir1/dir2/myVideo.mp4
原始 URL 的 Path 部分
t
5a71afc0
过期时间戳 1517400000 的十六进制表示结果
us
72d4cd1101
生成的随机字符串

步骤2:计算签名

sign = sha1("24FEQmTzro4V5u3D5epW/dir1/dir2/myVideo.mp45a71afc072d4cd1101") = "3ff5ab708b018fce5c3023b6d27ca938d7ab75e3"

步骤3:生成鉴权 URL

将鉴权参数拼接到视频原始 URL 的 QueryString 中,得到视频鉴权 URL:
http://example.vod2.myqcloud.com/dir1/dir2/myVideo.mp4?t=5a71afc0&us=72d4cd1101&sign=3ff5ab708b018fce5c3023b6d27ca938d7ab75e3

示例2:同一鉴权 URL 仅允许一个客户端 IP 访问

若您需要限制同一鉴权 URL 仅允许一个客户端 IP 访问,请参照如下步骤。

步骤1:确定鉴权参数

参数名
取值
说明
KEY
24FEQmTzro4V5u3D5epW
开发者开通 Key 防盗链时选择的密钥
Path
/dir1/dir2/myVideo.mp4
原始 URL 的 Path 部分
t
5a71afc0
过期时间戳 1517400000 的十六进制表示结果
us
72d4cd1101
生成的随机字符串
whip
192.168.0.0
允许访问的客户端 IP

步骤2:计算签名

sign = sha1("24FEQmTzro4V5u3D5epW/dir1/dir2/5a71afc072d4cd1101192.168.0.0") = "c8cd894ef4ee0387c99ac488f46bbe8205bc63af"

步骤3:生成鉴权 URL

将鉴权参数拼接到视频原始 URL 的 QueryString 中,得到视频鉴权 URL:
http://example.vod2.myqcloud.com/dir1/dir2/myVideo.mp4?t=5a71afc0&us=72d4cd1101&whip=192.168.0.0&sign=c8cd894ef4ee0387c99ac488f46bbe8205bc63af

示例3:允许播放时长控制

若您需要生成一个试看 URL,试看时长为视频的前 5 分钟(视频原始时长大于 5 分钟),请参照如下步骤。

步骤1:确定鉴权参数

参数名
取值
说明
KEY
24FEQmTzro4V5u3D5epW
开发者开通 Key 防盗链时选择的密钥
Path
/dir1/dir2/myVideo.mp4
原始 URL 的 Path 部分
t
5a71afc0
过期时间戳 1517400000 的十六进制表示结果
exper
300
试看前 5 分钟,即 300 秒
us
72d4cd1101
生成的随机字符串

步骤2:计算签名

sign = sha1("24FEQmTzro4V5u3D5epW/dir1/dir2/myVideo.mp45a71afc030072d4cd1101") = "3a50217aff3e39fbf795b8db40925bc61735fe83"

步骤3:生成鉴权 URL

将鉴权参数拼接到视频原始 URL 的 QueryString 中,得到视频鉴权 URL:
http://example.vod2.myqcloud.com/dir1/dir2/myVideo.mp4?t=5a71afc0&exper=300&us=72d4cd1101&sign=3a50217aff3e39fbf795b8db40925bc61735fe83