You need to enable JavaScript to run this app.
导航
B 类型配置
最近更新时间:2024.04.11 14:19:27首次发布时间:2023.08.16 16:38:19

本文档介绍火山引擎内容分发网络中 URL 鉴权模块的 B 类型配置。

alt

控制台配置说明

在内容分发网络控制台中,您需要做以下配置:

配置说明

生效对象

表示哪些文件的请求需要被鉴权。您至少需要添加一个规则,最多可以添加 10 个。每条规则包含条件类型、匹配方式和规则内容。当内容分发网络收到一个用户请求时,会根据规则的出现顺序依次将规则与请求相匹配。如果一个规则匹配了请求,内容分发网络停止匹配剩余规则。

规则内容的长度不能超过 1,024 个字符,不能包含以下任意字符:

  • 连续斜杠(//)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)。

同时,

  • 如果条件类型是 文件后缀,规则内容必须是一个或者多个以分号(;)分隔的文件后缀。文件后缀无需以句点(.)开头。例如:png;txt

  • 如果条件类型是 文件目录,规则内容与匹配类型只能使用系统默认值。默认值表示所有文件的请求都需要被鉴权。建议将条件类型是 文件目录 的规则放在最后,用于匹配那些没有匹配其他规则的用户请求。

主 KEY指定一个主密钥。密钥由 6-40 个字符组成,只能包含除了 Delete(ASCII code 127)的可打印 ASCII 字符。
备 KEY指定一个备密钥。密钥的输入要求与主 Key 相同。如果鉴权失败,内容分发网络会使用备密钥再计算一次签名并尝试与请求中的签名比对。
有效时间指定签名的有效时间,单位是秒。该配置与客户端请求中的 timestamp 参数搭配使用,用来计算签名的过期时间。该参数的取值范围是 0-315,360,000。签名的过期时间 = timestamp + 有效时间。在内容分发网络收到某个请求时,如果请求中包含的签名的过期时间早于当前时间,内容分发网络判定签名已过期。此时,内容分发网络返回 403 响应状态码,表示鉴权失败。控制台中默认的有效时间是 1800

鉴权算法

表示签名计算使用的算法。该配置有以下取值:

  • MD5:表示 MD5 算法。

  • SHA256:表示 SHA-256 算法。

说明

SHA-256 算法的安全性比 MD5 高,生成的哈希值出现碰撞的几率比 MD5 低,但是加密和解密过程的耗时比 MD5 长。

M3U8 改写

表示在响应一个 .m3u8 文件的请求时,内容分发网络是否对 .m3u8 文件中每个分片文件的 URL 添加签名参数。每个分片 URL 的签名是基于改写后分片 URL,使用签名规则计算的。

该配置还包含以下配置:

  • 分片 URL 原参数:表示在改写分片 URL 时是否保留 URL 中原有的参数。

  • 继承 M3U8 非签名参数:表示是否将来自该 M3U8 文件请求的不表示签名的查询参数添加到分片 URL 中。

需要留意的是,这两个配置会影响分片 URL 的签名计算。

  • 例子:有一个分片 URL 是 /video.ts?version=1。您设置 分片 URL 原参数删除继承 M3U8 非签名参数开启,用户的 M3U8 请求中的查询参数是 q_m3u8=cool。那么改写后的分片 URL 是 /video.ts?q_m3u8=cool,该分片的签名是基于这个改写后的 URL 计算的。

在更新分片 URL 时,内容分发网络可以识别以下格式:

  • 绝对路径的 URL。例如 https://example.com/xxx/yyy/song.ts

  • 以根目录路径开头的 URL。例如 /xxx/yyy/song.ts

  • 以相对路径开头的 URL。例如 yyy/song.ts

对于其他不符合规范的 URL 格式,内容分发网络可能会无法识别,导致签名参数添加失败。

鉴权计算器参见 鉴权计算器说明

请求 URL 格式

scheme://host/timestamp/<SIGNATURE>/uri(?query\_params)

请求 URL 示例

https://www.example.com/202105061700/2a76bb4719ab4beb77b4746b9c984a1d/product/cdn?query1=value1&query2=value2

签名计算公式

如果您在 URL 鉴权的配置中指定签名算法是 MD5,则签名 <SIGNATURE> 的计算公式如下:

md5(key + timestamp + uri)

如果您在 URL 鉴权的配置中指定签名算法是 SHA-256,则签名 <SIGNATURE> 的计算公式如下:

sha256(key + timestamp + uri)

说明

  • 公式中的 + 表示参数值的拼接,并不是实际的字符。

  • MD5 值是由 32 个十六进制字符组成的。SHA-256 值由 64 个十六进制字符组成的。

签名计算公式中各参数的说明如下:

参数描述
key表示在内容分发网络控制台配置的密钥。
uri表示 请求 URL 格式 中的 uri 参数,以斜杠(/)开头,不包含域名。如果路径包含中文字符,您需要对路径编码。在 请求 URL 示例 中,该参数值是 /product/cdn
timestamp表示 请求 URL 格式 中的 timestamp 参数,格式是 YYYYMMDDHHMM。该参数与控制台中的 有效时间 配置搭配使用,用来计算签名的过期时间。在 请求 URL 示例 中,该参数值是 202105061701

鉴权流程

在收到包含签名的客户端请求时,内容分发网络使用的鉴权流程如下:

  1. 基于请求中包含的鉴权参数以及您在内容分发网络控制台中配置的 key,使用 签名计算公式 计算签名。

  2. 判断内容分发网络计算得到的签名和客户端请求中包含的签名是否一致。如果不一致,内容分发网络判断请求不合法,拒绝该请求。

  3. 判断请求是否过期。如果存在以下情况,内容分发网络判断请求过期,拒绝该请求。

    • (客户端请求中的 timestamp 参数) + (您在内容分发网络控制台中配置的有效时间) < (内容分发网络收到该请求的时间)

说明

timestamp 的参数值所表示的时间是精确到分钟,而不是秒。在判断请求是否过期时,内容分发网络会将该时间补上 00 秒。例如,202105061701 表示的时间是 2015年5月6日17点01分00秒。