tencent cloud

文档反馈

鉴权方式 V

最后更新时间:2024-08-14 19:04:36

    功能简介

    为了强化视频场景的权限控制能力,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 参数。

    签名计算公式

    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 防盗链时选择的密钥
    Dir
    /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
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持