You need to enable JavaScript to run this app.
导航

配置 A 类型

最近更新时间2023.12.06 14:01:07

首次发布时间2023.08.23 19:50:16

本文为您介绍视频点播中配置 URL 鉴权模块 A 类型的配置说明。

  • 客户端请求格式scheme://host/uri?sign=timestamp-rand-uid-md5(uri-timestamp-rand-uid-key)(&...)
  • 客户端请求示例https://www.example.com/product/cdn?sign=1620291453-RGjpOiCONz-0-a8054e3070d32f4c2ba92cf1e8afc66c
  • 回源请求格式scheme://host/uri?(&...)
  • 回源请求示例https://www.example.com/product/cdn

说明

MD5 值是 32 位。

适用范围

URL 鉴权类型 A 配置适用于点播加速域名和自定义源站加速域名。

注意事项

如果想要变更 URL 鉴权模块,请先关闭点播调度。

操作步骤

  1. 登录视频点播控制台,进入空间。

  2. 选择左侧导航栏分发加速设置 > 域名管理,进入域名管理页面。

  3. 选择自定义源站加速域名页签,单击操作列的配置按钮。

  4. 进入自定义源站加速域名配置页面,选择访问控制页签。

  5. 单击页面下方的修改配置按钮。URL 鉴权默认关闭。您可以在 URL 鉴权下方,将状态设为开启,选择 A 类型,根据提示,完成参数配置。

    详细的参数说明如下所示。

    参数说明

    生效对象

    生效对象表示哪些文件的请求需要被鉴权。您至少需要添加一个对象,最多可以添加 10 个生效对象。您需要指定多个对象之间的条件关系。 这个条件关系表示匹配任何一个对象的请求就会被鉴权。 表示只有匹配所有对象的请求才会被鉴权。在设置对象时,您可以指定以下配置:

    • 文件后缀:表示满足指定后缀名匹配条件的文件请求需要被鉴权。匹配时区分大小写。指定的文件后缀可以包含英文字母和数字。需要遵循的规则如下:
      • 生效规则不能超过 1024 个字符。
      • 文件后缀规则支持填充多个,以 ; 分隔 如 jpg;png
      • 生效规则不能重复。
    • 文件目录:表示满足指定目录匹配条件的文件请求需要被鉴权。匹配时区分大小写。需要遵循的规则如下:
      • 生效规则不能超过 1024 个字符。
      • 目录匹配规则需要以 / 开头和结尾,多个目录之间以 ; 分隔 如 /test/a/;/test/b/。如果要指定加速域名下的所有目录,输入 /
      • 目录路径只能包含可打印 ASCII 字符,以下字符除外:连续斜杠(//)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)
      • 生效规则不能重复。
    • 文件全路径匹配:表示满足指定文件匹配条件的请求需要被鉴权。匹配时区分大小写。需要遵循的规则如下:
      • 生效规则不能超过 1024 个字符。
      • 全路径匹配需要以 / 开头,支持通配符 *,多个路径之间以 ; 分隔 如 /test/1.jpg;/test/2.jpg
      • 文件路径只能包含可打印 ASCII 字符,以下字符除外:连续斜杠(//)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)。
      • 生效规则不能重复。
    主 Key指定一个主密钥,不支持纯空白字符。密钥由 6-40 个字符组成,只能包含除了 Delete(ASCII code 127)的可打印 ASCII 字符。

    备 Key

    指定一个备密钥,不支持纯空白字符。密钥的输入要求与主 Key 相同。

    说明

    对线上业务域名变更 URL 鉴权时,建议在过渡期使用备 Key,避免业务中断。

    签名参数

    指定请求的签名参数名称。

    • 当为自定义源站加速域名时,默认的签名参数是 sign

    • 当为点播加速域名时,默认的签名参数是 auth_key。参数名称的说明如下:

      • 不能超过 100 个字符。
      • 大小写敏感。
      • 可以包含字母、数字、下划线(_)、中划线(-)、句号(.)、逗号(,)、感叹号(!)。
      • 至少包含一个字母或者数字。
      • 签名参数与时间戳参数不能同名。

    有效时间

    指定签名的有效时间,默认的有效时间是 1800,单位是秒。该配置与客户端请求中的 timestamp 参数搭配使用,用来计算签名的过期时间。该参数的取值范围是 [0,315,360,000]。
    公式:签名的过期时间 = timestamp + 有效时间。在视频点播收到某个请求时,如果请求中包含的签名的过期时间早于当前时间,视频点播判定签名已过期。此时,视频点播返回 403 响应状态码,表示鉴权失败。

    时间格式十进制(Unix 时间戳)

    M3U8 改写

    开启时,CDN 在响应 m3u8 文件前,会将文件內容里 ts 的 URL 改写为带有该鉴权加密串的 URL。启用该配置后,对于 .m3u8 文件的请求,视频点播会做以下处理:

    • 如果源站响应中包含了 Content-Length 头,视频点播会在客户端响应中会删除 Content-Length 头。
    • 在客户端响应中时会添加 Transfer-Encoding 响应头。该响应头的值是 chuncked

    同时,如果用户请求了 .m3u8 文件并且请求中包含了 Range 请求头,视频点播会忽略 Range 请求头,返回完整的 .m3u8 文件。

自定义源站加速域名签名计算

签名参数

客户端在计算签名时,需要的参数如下:

参数描述
key表示在视频点播控制台配置的密钥。可以使用主密钥或者备密钥。
uri表示请求的文件路径。路径以斜杠(/)开头,不包含域名。比如请求的完整路径为 https://www.example.com/image.png。则 uri 的值为 /image.png。如果路径包含中文字符,您需要对路径编码。
timestamp表示一个时间,格式是十进制的 Unix 时间戳。该参数与控制台中的 有效时间 配置搭配使用,用来计算签名的过期时间。示例:1644406401
rand表示一个随机字符串。长度为 1-100 位。可以包含字母和数字。示例:2e1ca42a1bb248408fc9cf435e5af744
uid表示用户 ID,暂时未使用。设置成 0 即可。
  1. 完成配置后,单击保存配置按钮。

请求示例

客户端请求

  • 带签名请求:https://www.example.com/img/volcano.png?sign=1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-54959c1ec3448bf8e992554476248fab
  • timestamp:2022-02-09 11:33:21 GMT。对应的十进制 Unix 时间戳是 1644406401。

鉴权参数

参数示例值
keyabc123def456
uri/img/volcano.png
rand2e1ca42a1bb248408fc9cf435e5af744
uid0
timestamp1644406401
duration0

鉴权逻辑

  1. 计算鉴权签名
    1. 视频点播收到客户端的带签名请求后,计算签名。计算过程使用以下 A 类型的请求格式:scheme://host/uri?sign=timestamp-rand-uid-md5(uri-timestamp-rand-uid-key)(&...)

      基于该请求格式,使用以下公式计算签名:md5(/img/volcano.png-1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-abc123def456)MD5 值在鉴权时会转化成小写进行比较。
    2. 视频点播将签名值加入原始请求。得到的请求如下:https://www.example.com/img/volcano.png?sign=1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-54959c1ec3448bf8e992554476248fab
  2. 验证请求合法性
    1. 判断该请求和客户端请求是否一致。本示例中两者一致。
    2. 判断请求是否过期。假设视频点播收到请求的时间是 2022-02-09 11:40:21 GMT。该时间大于 2022-02-09 11:33:21。本示例中请求未过期。

点播加速域名签名计算

具体说明详见签名计算