更新时间:2024-11-18 10:19:21
CDNetworks为您提供了五种不同的鉴权模式,本文将为您详细介绍鉴权模式A和鉴权模式B的原理和使用说明。
鉴权模式A和鉴权模式B,这两种模式允许您直接在URL的访问路径中嵌入鉴权信息。以下是这两种模式的URL格式:
http://domain/<time>/<key>/uri
http://domain/<key>/<time>/uri
在以上URL结构中,<key>
和<time>
是添加的鉴权信息。CDN边缘服务器将验证这些鉴权信息,并根据验证结果决定是否提供用户请求的内容。值得注意的是,模式A和模式B中鉴权信息<key>
和<time>
的顺序是固定的,无法更改。
注意:在以上URL示例中,我们使用了
<>
来表示鉴权参数的位置,实际URL中不会包含这些符号。在实际应用中,您只需按照指定的格式构建URL即可。
字段 | 说明 |
---|---|
domain | 指您在 CDNetworks 平台上注册的域名。 |
time | 鉴权URL包含一个时间戳,这个时间戳标明了URL的生成时刻。CDN边缘服务器会依据这个时间戳来判断URL是否仍在设定的有效期内。如果CDN检测到当前时间已超过URL设定的有效期,那么它将不再向用户提供该内容。请特别注意,time 值必须遵循预设的时间格式;若格式有误,鉴权将会失败。具体支持的时间格式,请参见本文 时间格式 部分。 |
key | 鉴权校验用的加密字符串,通常由时间戳 time 、加密密钥 ourkey 和实际访问路径 uri 组合后进行加密得到。关于如何计算这一鉴权参数的详细信息,请参考本文 密钥计算参数 部分。 |
uri | 实际请求CDN的URL地址部分,例如,如果原始请求URL为 http://cdnetworks.com/browse/index.html ,则 uri 应为 /browse/index.html 。注意,如果请求URL包含额外参数(例如 /browse/index.html?user=123 ),则 uri 应仅包括请求对象的路径,不包括问号及其后的参数。 |
当CDN边缘服务器接收到用户的访问请求后,首先会验证鉴权URL中的time
参数是否已过期:
time
参数加上鉴权URL的有效时长小于当前时间,则CDN边缘服务器会判断该URL已失效,不提供内容并返回 HTTP 403 错误。time
参数加上鉴权URL的有效时长不小于当前时间,CDN边缘服务器将认为该URL有效。接下来,服务器会计算请求URL应有的鉴权加密字符串 key
值,并将其与用户请求中携带的 key
值进行比对。如果两者匹配,则鉴权成功,服务器将响应用户请求并提供内容;如果不匹配,请求将被拒绝,并返回 HTTP 403 错误。在鉴权模式设置中,您可以根据需要勾选模式A或模式B来进行相应的配置。接下来,我们将为您详细解释各个配置字段的用途和设置方法。
自定义加密密钥($ourkey)
是一个独特的字符串,它专门用于生成URL中的鉴权加密字符串key
。由于该密钥仅为您和我们的CDN服务器所共享,因此它极大地增强了URL鉴权参数的安全性,使其难以被未经授权的第三方破解和伪造。在控制台中,您可方便地设置多个ourkey值,并通过;
符号将它们分隔开。
当您配置了多个ourkey时,CDN边缘服务器在接收到客户端请求时,会按照您预先设定的顺序,逐一尝试使用这些值进行鉴权。如果首个配置的ourkey未能验证成功,服务器将自动转向下一个配置的ourkey进行验证,以此类推,直至找到有效的鉴权密钥或所有密钥均验证失败。
在构建鉴权URL时,对于时间字段 time
,我们提供了五种可选的格式以满足您的不同需求:
时间戳格式 | 说明 |
---|---|
十进制Unix时间戳 | 例如,1586338211 表示 2020年4月8日17:30:11 UTC。 |
十进制Unix时间戳 | 转换为十六进制的十进制Unix时间戳,例如,5e8e2463 对应 1586338211 的十六进制形式,同样表示2020年4月8日17:30:11 UTC。 |
毫秒级别的Unix时间戳 | 精确到毫秒的十进制Unix时间戳,例如,1586338211000 代表上述相同的时间点,精确到毫秒。 |
YYYYMMDDHHMMSS | 一种常见的日期时间格式,表示为年月日时分秒,例如,20200408173011 表示 2020年4月8日17:30:11 |
YYYYMMDDHHMM | 类似于前一个格式,但不包括秒。例如,202004081730 表示 2020年4月8日17:30。 |
鉴权加密字符串key
的生成依赖于特定的加密算法。当前,我们默认使用MD5算法进行加密,但出于系统安全性的考虑,该算法暂不支持通过控制台直接更改。若您希望采用其他加密算法以提高安全性,请与我们专业的技术支持团队联系,他们将会协助您完成默认加密算法的更换工作。
在生成URL中的鉴权加密字符串key
时,您可以选择性地包含以下参数:时间戳字段time
、自定义加密密钥ourkey
以及URL请求地址uri
。关于这些字段的详细解释,请参阅先前的文档关于鉴权URL中各字段的说明。
在构建加密字符串key
的过程中,您可以选择包含上述参数中的一个或多个,并指定它们的组合顺序。例如,若您选择$uri$ourkey$time
作为组合顺序,这表示:
uri
)作为起始部分;ourkey
);time
)。以原始请求URL http://cdnetworks.com/browse/index.html
为例,假设配置的加密密钥(ourkey
)为cdnetworks
,时间戳(time
)为202405131620
。当您设置计算参数模式为$uri$ourkey$time
时,生成的未加密字符串key
将是/browse/index.htmlcdnetworks202405131620
。
为满足您的不同需求,我们提供了三种配置有效时间的方法,用于管理URL中鉴权信息的有效期。
配置有效期上限: 如果您希望设定鉴权信息的最大有效期,只需直接输入一个非负整数(例如,60
)。这个数字表示从URL中的时间戳字段time
指定的时间开始,多少秒之后鉴权信息将不再有效。例如,如果输入60
,则鉴权信息将在时间戳后的一分钟内有效。
配置有效期上下限: 如果您希望设定鉴权信息的有效时间范围,请输入两个用逗号分隔的数值。第一个数值表示从时间戳开始之前的多少秒内鉴权信息有效(即下限,应小于等于0),第二个数值表示从时间戳开始之后的多少秒内鉴权信息有效(即上限,应大于等于0)。例如,如果输入-60,60
,则鉴权信息将在时间戳前一分钟到时间戳后一分钟的范围内有效。
不进行有效期校验: 如果您不希望系统对鉴权信息的有效期进行任何校验,可以简单地输入一个减号-
。在这种配置下,系统将不会对鉴权信息的有效期进行任何检查或限制。
在模式A或模式B下,鉴权加密字符串和时间戳(key
和time
参数)在URL中的位置是固定的,必须严格遵循各自鉴权模式所规定的顺序,不得互换。因此,这个配置项在模式A和模式B下将不发挥作用。
因为URL鉴权配置相对复杂,为了避免错误的配置对您的线上业务造成影响,建议您先将配置部署到测试环境。确认配置无误后,再将其正式生效至线上环境。关于如何将配置部署到测试环境,请参考教程 通过预部署来验证配置是否生效。
此外,您可以使用 CDN 控制台上提供的时间戳防盗链计算器自动生成 URL 鉴权参数,以验证配置是否符合您的预期。访问文档 URL鉴权计算器,获取更多使用细节。