本文档介绍内容分发网络中 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,MD5 的值是 32 位的。
在内容分发网络控制台中,您需要做以下配置:
配置 | 说明 |
---|---|
生效对象 | 生效对象表示哪些文件的请求需要被鉴权。您至少需要添加一个对象,最多可以添加 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。 |
有效时间 | 指定签名的有效时间,单位是秒。该配置与客户端请求中的 timestamp 参数搭配使用,用来计算签名的过期时间。该参数的取值范围是 0-315,360,000。签名的过期时间 = timestamp + 有效时间。在内容分发网络收到某个请求时,如果请求中包含的签名的过期时间早于当前时间,内容分发网络判定签名已过期。此时,内容分发网络返回 403 响应状态码,表示鉴权失败。控制台中默认的有效时间是 1800 。 |
M3U8 改写 | 启用该配置后,内容分发网络在返回 .m3u8 文件前,会对文件做以下处理:将鉴权信息添加到 .m3u8 文件中包含的所有分片文件的 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 即可。 |
客户端请求:
鉴权参数
鉴权逻辑