You need to enable JavaScript to run this app.
导航
A 类型说明
最近更新时间:2024.07.05 15:03:31首次发布时间:2023.08.23 19:50:16

本文为您详细介绍 A 类型鉴权方式的工作原理并提供鉴权示例。

适用范围

本文仅适用于自定义源站加速域名。

工作原理

A 类型鉴权方式的工作原理说明如下:

  • 鉴权 URL 构成:

    scheme://host/uri?sign=timestamp-rand-uid-md5(uri-timestamp-rand-uid-key)(&...)
    
  • 鉴权 URL 示例:

    https://www.example.com/img/volcano.png?auth_key=1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-54959c1ec3448bf8e992554476248fab
    
  • 鉴权参数说明如下:

    参数

    描述

    uri

    请求的文件路径。路径以斜杠(/)开头,不包含域名。比如请求的完整路径为 https://www.example.com/image.png,则 uri 的值为 /image.png。如果路径包含中文字符,您需要对路径编码。

    timestamp

    鉴权 URL 的生成时间,为十进制的 Unix 时间戳。该参数与您在视频点播控制台中配置的有效时长搭配使用,用来计算签名的失效时间。签名的失效时间 = timestamp + 有效时长。示例:1644406401

    rand

    随机字符串。长度为 1-100 位。可以包含字母和数字。示例:2e1ca42a1bb248408****f435e5af744

    uid

    用户 ID。预留参数,暂未使用。设置成 0 即可。

    key

    您在视频点播控制台配置的密钥。可以使用主密钥或者备密钥。

  • 鉴权流程:

    1. CDN 节点收到客户端的带签名请求后,使用 MD5 算法,基于 md5(uri-timestamp-rand-uid-key) 公式计算签名值。MD5 值在鉴权时会转化成小写进行比较。

      说明

      MD5 值为 32 位。

    2. CDN 节点进行以下校验:
      1. 判断服务端计算出的签名值和客户端请求 URL 中的签名值是否一致。
      2. 判断签名是否过期。CDN 节点会将“timestamp+ 您在视频点播控制台配置的有效时长”跟当前时间进行对比。如果签名的过期时间早于当前时间,视频点播判定签名已过期;反之,则判定签名有效。
    3. 根据检验结果,返回资源请求或 HTTP 403 错误。

控制台配置说明

对于 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 个字符,只能包含可打印 ASCII 字符,Delete(ASCII code 127)除外。不支持纯空白字符。

备 Key

备密钥。长度限制为 6-40 个字符,只能包含可打印 ASCII 字符,Delete(ASCII code 127)除外。不支持纯空白字符。

说明

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

签名参数

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

说明

  • 对于自定义源站加速域名,默认的签名参数名称是 sign
  • 对于点播加速域名,默认的签名参数是 auth_key

有效时间

签名的有效时长。默认的有效时间是 1800。单位为秒。取值范围是 [0, 315,360,000]。该参数与客户端请求中的 timestamp 参数搭配使用,用来计算签名的失效时间。签名的失效时间 = timestamp + 有效时长。

时间格式

固定为十进制(Unix 时间戳)

M3U8 改写

是否开启 M3U8 改写。启用该配置后,对于 M3U8 文件的请求,视频点播 CDN 节点在响应前,会将 M3U8 文件里 TS 的 URL 改写为带有该鉴权加密串的 URL。如果客户端请求中包含了 Range 请求头,会忽略 Range 请求头,返回完整的 M3U8 文件。

鉴权示例

以下示例可以帮助您准确理解鉴权方式 A 的实现方式。

示例条件

本示例中,假设带签名的请求 URL 为:

https://www.example.com/img/volcano.png?auth_key=1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-54959c1ec3448bf8e992554476248fab

根据以上 URL,各鉴权参数的取值具体如下:

  • uri 的值为 /img/volcano.png
  • timestamp 的值为 1644406401,表示鉴权 URL 的生成时间为 2022-02-09 11:33:21 GMT。
  • rand 的值为 2e1ca42a1bb248408fc9cf435e5af744
  • uid 的值为 0

再假设您在视频点播控制台设置的密钥为 abc123def456,有效时长为 1800 秒。

鉴权流程

本示例中的鉴权流程如下:

  1. 视频点播 CDN 节点收到客户端的带签名请求后,使用 MD5 算法,基于 md5(uri-timestamp-rand-uid-key) 公式计算签名值。在本示例中,签名计算公式为:md5(/img/volcano.png-1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-abc123def456)

  2. CDN 节点将签名值加入原始请求。得到的请求如下:

    https://www.example.com/img/volcano.png?sign=1644406401-2e1ca42a1bb248408fc9cf435e5af744-0-54959c1ec3448bf8e992554476248fab
    
  3. CDN 节点验证请求合法性:

    1. 判断该请求和客户端请求是否一致。本示例中两者一致。
    2. 判断请求是否过期。假设本示例中,CDN 节点收到请求的时间是 2022-02-09 11:40:21 GMT,该时间早于 “2022-02-09 11:33:21 + 1800 秒”,因此判定请求未过期。

签名工具

视频点播为 A 类型鉴权方式提供签名工具。您可前往视频点播控制台签名工具页面查看。详细使用步骤请见签名工具