veImageX 图片解决方案不仅提供了 Referer 黑白名单的访问控制,还支持 ABCD 四种方式的鉴权,更有效地保障客户站点资源不被非法访问或盗用。本文将介绍鉴权方式 A 的参数及原理。
已开通 veImageX 图片服务,如未开通可参照服务管理。
服务 | URL |
---|---|
图像处理服务 | http(s)://域名/资源URI~模板.输出格式?签名参数名=timestamp-rand-uid-md5hash |
素材托管服务 | http(s)://域名/资源URI?签名参数名=timestamp-rand-uid-md5hash |
鉴权字段描述如下表所示。
字段 | 描述 |
---|---|
域名 | CDN 域名。 |
资源 URI | 图片或素材在 veImageX 服务中对应存储的唯一标识符。
|
模版 | 图像处理模版,图像处理服务专有。 |
输出格式 | 图片输出格式,图像处理服务专有。 |
签名参数名 | 鉴权信息的参数名,支持用户自定义,默认为 |
timestamp | 发起资源请求的十进制整数 Unix 时间戳,与鉴权有效时间共同控制 URL 的有效时间。从UTC1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。 |
rand | 随机字符串。 |
uid | 用户 ID。 |
md5hash | 通过 md5 算法计算出的长度为32的字符串,计算公式为:md5hash = md5sum(path-timestamp-rand-uid-主鉴权密钥)。
|
CDN 接到资源访问请求后,将 URL 中的timestamp + 鉴权有效时间
和当前时间进行比较。
timestamp + 鉴权有效时间
小于当前时间,服务器判定过期失效,并返回 HTTP 403 错误。timestamp + 鉴权有效时间
大于当前时间,使用 MD5 算法算出 md5hash 的值,将计算出的 md5hash 值与 URL 中的 md5hash 进行比较。
说明
登录 veImageX 控制台,单击服务管理。选择相应的图片服务,单击基础配置。
在分发配置页签的域名信息中,单击域名的管理按钮。
切换到访问控制标签页,打开 URL 鉴权按钮,开始配置 URL 鉴权。
具体参数信息如下表所示。
参数 | 说明 |
---|---|
主鉴权密钥 | 指定主鉴权密钥,由 6-40 位大小写字母与数字组成,必填。 |
备用鉴权密钥 | 指定备用鉴权密钥,与主鉴权密钥的配置规则相同,选填。 |
鉴权参数名 | 请求的鉴权参数名称,由 1-100 位大小写字母、数字、下划线组成,默认为 sign。 |
有效时间 | 一次鉴权后默认生效的时长。
说明 如果当前时间大于资源请求 URL 中携带的 timestamp + 有效时间时,判断本次鉴权失败。资源请求返回失败代码。 |
假设待签资源信息如下所示:
imagex.e7e7e7.com
1.jpg
tplv-service-image
image
1627287282
rand
imagex
配置 URL 鉴权参数如下:
A
94d76db810e3a074fa6b628f92bfe575
sign
1800s
鉴权 URL 规则为:http(s)://域名/资源URI~模板.输出格式?签名参数名=timestamp-rand-uid-md5hash
md5hash = md5sum(签名串) = md5sum(/资源URI~模板.输出格式-timestamp-rand-uid-主鉴权密钥) = md5sum(/1.jpg~tplv-service-image.image-1627287282-rand-imagex-94d76db810e3a074fa6b628f92bfe575) = 9a8229123604d22d18b6dcfe44b4519e
http://imagex.e7e7e7.com/1.jpg~tplv-service-image.image?sign=1627287282-rand-imagex-9a8229123604d22d18b6dcfe44b4519e
我们已提供多种语言的鉴权示例,具体的实现方法请参考鉴权示例。