You need to enable JavaScript to run this app.
导航
E 类型说明
最近更新时间:2024.07.24 21:21:45首次发布时间:2023.08.23 19:50:17

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

工作原理

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

  • 鉴权 URL 构成:

    scheme://host/uri?sign=md5(<自定义计算规则>)&t=timestamp(&...)
    
  • 鉴权 URL 示例:

    https://www.example.com/img/image.png?sign=e5ea05458726271462fb180a813e3302&t=1644406401
    
  • 鉴权参数说明:不同于其他鉴权类型使用固定的请求格式,E 类型允许您自定义参与签名计算的变量自定义签名计算规则

  • 鉴权流程:

    1. CDN 节点收到客户端的带签名请求后,使用 MD5 算法,基于自定义签名计算规则计算签名值。MD5 值在鉴权时会转化成小写进行比较。

      说明

      MD5 值是 32 位。

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

控制台配置说明

对于 E 类型鉴权方式,您可以在视频点播控制台中配置以下参数
图片

参数

说明

生效对象

表示对哪些文件的请求需要被鉴权。您至少需要添加一个规则,最多可以添加 10 个。
您可以指定多个规则之间的关系:

  • 默认是任一,表示匹配任何一个规则的请求就会被鉴权。
  • 所有表示只有匹配所有规则的请求才会被鉴权。

每条规则包含以下配置:

  • 条件类型:支持以下选项:
    • 文件目录:规则应用于特定目录下的所有文件。
    • 文件后缀:规则应用于特定后缀名的所有文件。
    • 文件全路径匹配:规则应用于特定文件。
  • 是否匹配:可设为匹配不匹配
  • 规则:根据规则类型,输入规则的内容。长度不能超过 1,024 个字符。不能包含以下字符:连续斜杠 //、空格、美元符号 $、问号 ?、Delete(ASCII code 127)。不同规则类型的具体要求如下:
    • 如果规则类型是文件后缀,规则内容必须是一个或者多个以分号 ; 分隔的文件后缀。文件后缀无需以句点 . 开头。示例:png;txt
    • 如果规则类型是文件目录,规则内容必须是一个或者多个以分号 ; 分隔的目录路径。目录路径必须以斜杠 / 开头和结尾。示例:/chs/foods/;/us/birds/
    • 如果规则类型是文件全路径,规则内容必须是一个或者多个以分号 ; 分隔的文件路径。文件路径必须以斜杠 / 开头,可以包含星号 * 用来表示一个或者多个字符。示例:/chs/foods/local*sets;/us/birds/chickadee

主 Key

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

备 Key

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

说明

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

签名参数

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

时间戳参数

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

有效时间

签名的有效时长。该参数与客户端请求中的 timestamp 参数搭配使用,用来计算签名的失效时间。签名的失效时间 = timestamp + 有效时长。您可指定一个时间单位并输入时间。默认的有效时长是 30 分。您可以指定的最长时间是 10 年,也就是 315,360,000 秒。具体说明如下:

  • 如果您指定的时间单位是,您可以输入的最大值是 315360000
  • 如果您指定的时间单位是,您可以输入的最大值是 5256000
  • 如果您指定的时间单位是小时,您可以输入的最大值是 87600
  • 如果您指定的时间单位是,您可以输入的最大值是 3650

时间格式

支持以下时间格式:

  • 十进制(Unix 时间戳)
  • 十六进制(Unix 时间戳)

自定义签算变量

详见自定义参与签名计算的变量

计算规则

详见自定义签名计算规则

自定义参与签名计算的变量

对于 E 类型,您可以添加自定义变量用于签名计算。您最多可以添加 50 个变量。您可在视频点播控制台中单击新增规则添加一个变量获取规则。
图片
规则的参数说明如下:

参数

说明

变量类型

指定变量的类型。支持以下取值:

  • 请求参数:表示该变量是请求中的一个查询参数。
  • 请求头部:表示该变量是请求中的一个头部。

取值方式

表示视频点播如何将参数取值与请求中的参数匹配。当前仅支持精确匹配

参数取值

表示需要额外参与签名计算的变量名称。变量名称不能超过 100 个字符。

  • 如果变量类型是请求参数,需要遵循的规则如下:
    • 可以包含字母、数字、连字符 -、逗号 ,、句号 .、感叹号 !
    • 不得和签名计算规则中已支持的签名参数同名。
  • 如果变量类型是请求头部,需要遵循的规则如下:
    • 可以包含可打印 ASCII 字符,除了这些字符:中文、下划线 _、空格、双引号 "、冒号 :、Delete(ASCII code 127)。
    • 不得和签名计算规则中已支持的签名参数同名。

添加自定义变量后,您就可以在自定义签名计算规则时选择该变量。

自定义签名计算规则

在计算签名时,不同于其他鉴权类型使用固定的签名计算规则,E 类型允许您自定义签名计算规则。您可在视频点播控制台中指定签名计算规则包含以下参数,并且通过拖拽调整参数在签名计算规则中的出现顺序。
图片

参数

是否必选

描述

uri

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

key

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

timestamp

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

Referer

用户请求中 Referer 头部的值。

客户端域名

请求的加速域名。

Origin

请求中 Origin 头部的值。

客户端IP

用户的 IP。

User-Agent

请求中 User-Agent 头部的值。

自定义变量

您在自定义参与签名计算的变量中定义的变量名称。

鉴权示例

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

示例条件

本示例中,假设:

  • 用户请求的请求头中,IP 是 49.7.47.128,Referer 是 https://www.test.com/test.html
  • 在控制台中的配置如下:
    • 生效对象:文件后缀名匹配 png;txt
    • 有效时长:1800 秒
    • 密钥:abc123def456
    • 计算规则:指定签名参数和顺序如下:
      • 密钥
      • 客户端IP
      • uri
      • Referer
      • 时间戳参数

假设带签名的请求 URL 为:

https://www.example.com/img/image.png?sign=e5ea05458726271462fb180a813e3302&t=1644406401

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

  • uri 的值为 /img/volcano.png
  • 时间戳参数的值为 1644406401,表示鉴权 URL 的生成时间为 2022-02-09 11:33:21 GMT。

鉴权流程

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

  1. 视频点播 CDN 节点收到客户端的带签名请求后,根据计算规则中指定的签名参数和顺序,使用 MD5 算法,基于 md5(key + ip + uri + referer + timestamp) 公式计算签名值。在本示例中,签名计算公式为:md5(abc123def45649.7.47.128/img/image.pnghttps://www.test.com/test.html1644406401)

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

    https://www.example.com/img/image.png?sign=e5ea05458726271462fb180a813e3302&t=1644406401
    
  3. CDN 节点验证请求合法性:

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