veImageX 图片解决方案不仅提供了 Referer 黑白名单的访问控制,还支持 ABCD 四种方式的鉴权,更有效地保障客户站点资源不被非法访问或盗用。本文将介绍鉴权方式 B 的参数及原理。
已开通 veImageX 图片服务,如未开通可参照服务管理。
URL 格式规则说明
服务 | URL |
---|---|
图片处理服务 | http(s)://域名/timestamp/md5hash/资源URI~模板.输出格式 |
素材托管服务 | http(s)://域名/timestamp/md5hash/资源URI |
鉴权字段描述如下表所示:
字段 | 描述 |
---|---|
域名 | CDN 域名。 |
资源 URI | 图片或素材在 veImageX 服务中对应存储的唯一标识符。
|
模版 | 图片处理模版,图片处理服务专有。 |
输出格式 | 图片输出格式,图片处理服务专有。 |
timestamp | 发起资源请求的时间,与鉴权有效时间共同控制 URL 的有效时间,格式为yyyyMMddHHmm。 |
md5hash | 通过 md5 算法计算出的长度为 32 的字符串,计算公式为:md5hash = md5sum(主鉴权密钥timestamppath) 。
|
鉴权逻辑说明
CDN 接到资源访问请求后,将 URL 中的 timestamp + 鉴权有效时间
和当前时间进行比较。
如果 timestamp + 鉴权有效时间
小于当前时间,服务器判定过期失效,并返回 HTTP 403 错误。
如果 timestamp + 鉴权有效时间
大于当前时间,使用 MD5 算法算出 md5hash 的值,将计算出的 md5hash 值与 URL 中的 md5hash 进行比较。
说明
登录 veImageX 控制台,单击服务管理。选择相应的图片服务,单击基础配置。
在分发配置页签的域名信息中,单击域名的管理按钮。
进入配置页面的访问控制,打开 URL 鉴权按钮,开始配置 URL 鉴权。
具体参数信息如下表所示。
参数 | 说明 |
---|---|
主鉴权密钥 | 在 veImageX 控制台域名配置中设定的鉴权密钥,必填。
|
备用鉴权密钥 | 备用 KEY 默认为空,与主 KEY 的配置规则相同。选填。 |
有效时间 | 一次鉴权后默认生效的时长。
说明 如果当前时间大于资源请求 URL 中携带的 timestamp + 有效时间时,判断本次鉴权失败。资源请求返回失败代码。 |
参数 | 值 |
---|---|
域名 | imagex.e7e7e7.com |
鉴权模式 | B |
主鉴权密钥 | 94d76db810e3a074fa6b628f92bfe575 |
有效时间 | 1800s |
待签资源鉴权参数如下表所示。
参数 | 值 |
---|---|
资源 URI | 1.jpg |
模版 | tplv-service-image |
格式 | image |
timestamp | 202106261614 |
鉴权 URL 规则为:http(s)://域名/timestamp/md5hash/资源URI~模板.输出格式
生成的鉴权 URL:http://imagex.e7e7e7.com/202106261614/8b31637bab50d8e38e7904dae934571b/1.jpg~tplv-service-image.image
CDN 缓存:开启了鉴权方式 B 的域名,访问 URL 中携带了签名参数,CDN 进行缓存时,会自动忽略URL中的 timestamp 和 md5hash 进行缓存,不会影响域名缓存命中率。
回源:对于通过 CDN 鉴权但未命中缓存的 URL,CDN 节点会发起回源请求,回源请求会去掉path 中的 timestamp 和 md5hash,源站无需特殊处理。
我们已提供 Python Demo 以及 Go Demo 示例,具体的实现方法请参考鉴权示例。