本文为您详细介绍 E 类型鉴权方式的工作原理并提供鉴权示例。
E 类型鉴权方式的工作原理说明如下:
鉴权 URL 构成:
scheme://host/uri?sign=md5(<自定义计算规则>)&t=timestamp(&...)
鉴权 URL 示例:
https://www.example.com/img/image.png?sign=e5ea05458726271462fb180a813e3302&t=1644406401
鉴权参数说明:不同于其他鉴权类型使用固定的请求格式,E 类型允许您自定义参与签名计算的变量和自定义签名计算规则。
鉴权流程:
说明
MD5 值是 32 位。
timestamp
+ 您在视频点播控制台配置的有效时长”跟当前时间进行对比。如果签名的过期时间早于当前时间,视频点播判定签名已过期;反之,则判定签名有效。对于 E 类型鉴权方式,您可以在视频点播控制台中配置以下参数
参数 | 说明 |
---|---|
生效对象 | 表示对哪些文件的请求需要被鉴权。您至少需要添加一个规则,最多可以添加 10 个。
每条规则包含以下配置:
|
主 Key | 主密钥。长度限制为 6-40 个字符,只能包含可打印 ASCII 字符,Delete(ASCII code 127)除外。不支持纯空白字符。 |
备 Key | 备密钥。长度限制为 6-40 个字符,只能包含可打印 ASCII 字符,Delete(ASCII code 127)除外。不支持纯空白字符。 说明 对线上业务域名变更 URL 鉴权时,建议在过渡期使用备 Key,避免业务中断。 |
签名参数 | 请求的签名参数名称。默认的签名参数名称是 |
时间戳参数 | 请求的时间戳参数名称。默认的签名参数是 |
有效时间 | 签名的有效时长。该参数与客户端请求中的
|
时间格式 | 支持以下时间格式:
|
自定义签算变量 | 详见自定义参与签名计算的变量。 |
计算规则 | 详见自定义签名计算规则。 |
对于 E 类型,您可以添加自定义变量用于签名计算。您最多可以添加 50 个变量。您可在视频点播控制台中单击新增规则添加一个变量获取规则。
规则的参数说明如下:
参数 | 说明 |
---|---|
变量类型 | 指定变量的类型。支持以下取值:
|
取值方式 | 表示视频点播如何将参数取值与请求中的参数匹配。当前仅支持精确匹配。 |
参数取值 | 表示需要额外参与签名计算的变量名称。变量名称不能超过 100 个字符。
|
添加自定义变量后,您就可以在自定义签名计算规则时选择该变量。
在计算签名时,不同于其他鉴权类型使用固定的签名计算规则,E 类型允许您自定义签名计算规则。您可在视频点播控制台中指定签名计算规则包含以下参数,并且通过拖拽调整参数在签名计算规则中的出现顺序。
参数 | 是否必选 | 描述 |
---|---|---|
uri | 是 | 请求的文件路径。路径以斜杠 |
key | 是 | 您在视频点播控制台配置的密钥。可以使用主密钥或者备密钥。 |
timestamp | 是 | 鉴权 URL 的生成时间,为十进制的 Unix 时间戳。该参数与您在视频点播控制台中配置的有效时长搭配使用,用来计算签名的失效时间。签名的失效时间 = timestamp + 有效时长。示例: |
Referer | 否 | 用户请求中 Referer 头部的值。 |
客户端域名 | 否 | 请求的加速域名。 |
Origin | 否 | 请求中 Origin 头部的值。 |
客户端IP | 否 | 用户的 IP。 |
User-Agent | 否 | 请求中 User-Agent 头部的值。 |
自定义变量 | 否 | 您在自定义参与签名计算的变量中定义的变量名称。 |
以下示例可以帮助您准确理解鉴权方式 E 的实现方式。
本示例中,假设:
49.7.47.128
,Referer 是 https://www.test.com/test.html
。png;txt
abc123def456
假设带签名的请求 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。本示例中的鉴权流程如下:
视频点播 CDN 节点收到客户端的带签名请求后,根据计算规则中指定的签名参数和顺序,使用 MD5 算法,基于 md5(key + ip + uri + referer + timestamp)
公式计算签名值。在本示例中,签名计算公式为:md5(abc123def45649.7.47.128/img/image.pnghttps://www.test.com/test.html1644406401)
。
CDN 节点将签名值加入原始请求。得到的请求如下:
https://www.example.com/img/image.png?sign=e5ea05458726271462fb180a813e3302&t=1644406401
CDN 节点验证请求合法性: