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

E 类型配置

最近更新时间2024.01.10 15:50:26

首次发布时间2023.08.16 16:38:19

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

alt

控制台中的配置

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

配置说明

生效对象

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

  • 文件后缀:表示满足指定后缀名匹配条件的文件请求需要被鉴权。匹配时区分大小写。指定的文件后缀可以包含英文字母和数字。多个文件后缀使用分号(;)分隔,长度不超过 1024 个字符。例如 png;txt

  • 文件目录:表示满足指定目录匹配条件的文件请求需要被鉴权。匹配时区分大小写。您可以输入一个或者多个目录路径,总长度不能超过 1,024 个字符。多个目录路径使用分号分隔。目录路径的输入要求如下:

    • 目录路径必须以斜杠(/)开头和结尾。比如 /www/img/volc/;/www/doc/。如果要指定加速域名下的所有目录,输入 /

    • 目录路径只能包含可打印 ASCII 字符,以下字符除外:

      • 连续斜杠(//)、百分号(%)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)。
  • 文件全路径:表示满足指定文件匹配条件的请求需要被鉴权。匹配时区分大小写。您可以输入一个或者多个文件路径,总长度不能超过 1,024 个字符。文件路径支持使用通配符(*)表示一个或者多个连续字符。多个文件路径使用分号分隔。文件路径的输入要求如下:

    • 文件路径必须以斜杠(/)开头。例如/www/img/image.png;/doc/study.docx

    • 文件路径只能包含可打印 ASCII 字符,以下字符除外:

      • 连续斜杠(//)、百分号(%)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)。
主 KEY指定一个主密钥。密钥由 6-40 个字符组成,只能包含除了 Delete(ASCII code 127)的可打印 ASCII 字符。
备 KEY指定一个备密钥。密钥的输入要求与主 Key 相同。如果鉴权失败,内容分发网络会使用备密钥再计算一次签名并尝试与请求中的签名比对。

签名参数

指定请求的签名参数名称。参数名称的说明如下:

  • 不能超过 100 个字符。

  • 大小写敏感。

  • 可以包含字母、数字、下划线(_)、中划线(-)、句号(.)、逗号(,)、感叹号(!)。

  • 至少包含一个字母或者数字。

  • 不能与时间戳参数相同。

  • 控制台中默认的签名参数是 sign

有效时间指定签名的有效时间,单位是秒。该配置与自定义计算规则中的 时间戳 参数搭配使用,用来计算签名的过期时间。该参数的取值范围是 0-315,360,000。签名的过期时间 = timestamp + 有效时间。在内容分发网络收到某个请求时,如果请求中包含的签名的过期时间早于当前时间,内容分发网络判定签名已过期。此时,内容分发网络返回 403 响应状态码,表示鉴权失败。控制台中默认的有效时间是 1800

时间戳参数

指定请求的时间戳参数的名称。参数名称的说明如下:

  • 不能超过 100 个字符。

  • 大小写敏感。

  • 可以包含字母、数字、下划线(_)、中划线(-)、句号(.)、逗号(,)、感叹号(!)。

  • 不能与签名参数相同。

  • 控制台中默认的签名参数是 t

时间格式指定 Unix 时间戳的格式。
计算规则指定参与签名计算的鉴权参数以及这些参数的顺序。

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

对于 E 类型,您可以添加自定义的变量用于签名计算。您最多可以添加 50 个变量。您可以点击 新增规则 添加一个变量获取的规则。规则的各配置说明如下:

配置说明

变量类型

指定变量的类型。该配置有以下取值:

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

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

取值方式表示内容分发网络如何将 参数取值 与 请求中的参数匹配。该配置的取值只能是 精确匹配

参数取值

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

  • 如果 变量类型请求参数,变量名称可以包含字母、数字、连字符(-)、逗号(,)、句号(.)、感叹号(!)。

  • 如果 变量类型请求头部,变量名称可以包含可打印 ASCII 字符,除了以下这些字符:

    • 下划线(_)、空格、双引号(")、冒号(:)、Delete(ASCII code 127)。
操作表示您可以对该规则进行的操作。

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

alt

客户端请求格式

scheme://host/uri?sign=\<signature\>&t=timestamp(&...)

请求示例

https://www.example.com/product/cdn?sign=e954e253c33634b510443af72406600f&t=1620291453&query1=value1&query2=value2

签名计算公式

签名 <SIGNATURE> 的计算公式如下:

md5(<自定义计算规则>)

说明

  • MD5 的值是 32 位的。

  • <自定义计算规则> 表示的是参与签名计算的鉴权参数,按指定的出现顺序的拼接。

在计算签名时,其他鉴权类型只能使用固定的计算规则,但是 E 类型允许您自定义计算规则。

您可以指定计算规则包含以下参数,并且通过拖拽调整参数的在计算规则中的出现顺序。

参数是否必选描述
密钥表示在内容分发网络控制台配置的密钥。
uri表示请求 URL 中的 uri 参数,以斜杠(/)开头,不包含域名。如果路径包含中文字符,您需要对路径编码。在请求示例中,该参数值是 /product/cdn
时间戳参数表示请求 URL 中的 timestamp 参数,格式是十进制的 Unix 时间戳。该参数与控制台中的 有效时间 配置搭配使用,用来计算签名的过期时间。在请求示例中,该参数值是 1620291453
Referer表示用户请求中 Referer 头部的值。
客户端域名表示请求的加速域名。
Origin表示请求中 Origin 头部的值。
客户端IP表示用户的 IP 地址。
User-Agent表示请求中 User-Agent 头部的值。
自定义变量表示您在自定义签名计算变量中定义的变量名称。您在 添加参与签名计算的自定义变量 步骤中添加的变量会出现在参数列表中。

鉴权流程

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

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

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

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

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