You need to enable JavaScript to run this app.
导航
鉴权方式 A
最近更新时间:2024.07.12 16:42:25首次发布时间:2022.08.19 10:28:57

veImageX 图片解决方案不仅提供了 Referer 黑白名单的访问控制,还支持 ABCD 四种方式的鉴权,更有效地保障客户站点资源不被非法访问或盗用。本文将介绍鉴权方式 A 的参数及原理。

前提条件

已开通 veImageX 图片服务,如未开通可参照服务管理

原理说明

鉴权 URL 格式规则说明

服务URL
图片处理服务http(s)://域名/资源URI~模板.输出格式?签名参数名=timestamp-rand-uid-md5hash
素材托管服务http(s)://域名/资源URI?签名参数名=timestamp-rand-uid-md5hash

鉴权字段描述如下表所示。

字段描述
域名CDN 域名。

资源 URI

图片或素材在 veImageX 服务中对应存储的唯一标识符。

  • 使用服务端或客户端上传 SDK,成功上传资源后,返回值中包含资源的 URI;
  • 在控制台的资源管理中,单击获取地址,在弹窗中,也能看到资源对应的 URI。
模版图片处理模版,图片处理服务专有。
输出格式图片输出格式,图片处理服务专有。
签名参数名鉴权信息的参数名,支持用户自定义,默认为sign。由 1-100 位大小写字母、数字、下划线组成。
timestamp发起资源请求的十进制整数 Unix 时间戳,与鉴权有效时间共同控制 URL 的有效时间。从UTC1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。
rand随机字符串。
uid用户 ID。

md5hash

通过 md5 算法计算出的长度为32的字符串,计算公式为:md5hash = md5sum(path-timestamp-rand-uid-主鉴权密钥)。

  • 图片处理服务 path = /资源URI~模板.输出格式
  • 素材托管服务 path = /资源URI

鉴权逻辑说明

CDN 接到资源访问请求后,将 URL 中的timestamp + 鉴权有效时间和当前时间进行比较。

  1. 如果timestamp + 鉴权有效时间小于当前时间,服务器判定过期失效,并返回 HTTP 403 错误。

  2. 如果timestamp + 鉴权有效时间大于当前时间,使用 MD5 算法算出 md5hash 的值,将计算出的 md5hash 值与 URL 中的 md5hash 进行比较。

    • 如果结果一致,鉴权通过,返回资源请求;
    • 如果结果不一致,鉴权失败,返回 HTTP 403 错误。

操作步骤

  • 控制台参数配置

说明

  • 若您的鉴权配置项由于某些原因(如启用了非标配置)被锁定,锁定后界面将展示锁定图标。您可提交工单联系技术支持修改配置。
  • 若该域名被指定为资源级别封禁配置的白名单域名后,该 URL 鉴权无法关闭。如需关闭,请从白名单中移除该域名。
  1. 登录 veImageX 控制台,单击服务管理。选择相应的图片服务,单击基础配置

  2. 分发配置页签的域名信息中,单击域名的管理按钮。

  3. 进入配置页面的访问控制,打开 URL 鉴权按钮,开始配置 URL 鉴权。

具体参数信息如下表所示。

参数说明

主鉴权密钥

在 veImageX 控制台域名配置中设定的鉴权密钥,必填。

  • 支持自定义,可由 6-40 位大小写字母与数字组成;
  • 支持至多 2 组密钥同时生效。
备用鉴权密钥备用 KEY 默认为空,与主 KEY 的配置规则相同。选填。

鉴权参数名

URL 中整个鉴权信息的变量。

  • 支持 1-100 位大小写字母、数字、下划线组成。

有效时间

一次鉴权后默认生效的时长。

  • 默认为 1800s;
  • 可设置 1~630720000 的正整数。

说明

如果当前时间大于资源请求 URL 中携带的 timestamp + 有效时间时,判断本次鉴权失败。资源请求返回失败代码。

  • 生成签名 URL 示例说明
参数
域名imagex.e7e7e7.com
鉴权模式A
主鉴权密钥94d76db810e3a074fa6b628f92bfe575
签名参数名sign
有效时间1800s

待签资源鉴权参数说明如下表所示。

参数
资源 URI1.jpg
模版tplv-service-image
格式image
timestamp1627287282
rand随机字符串 rand
uidimagex
  • 鉴权 URL 规则为:http(s)://域名/资源URI~模板.输出格式?签名参数名=timestamp-rand-uid-md5hash

    • 计算签名串的 md5 值:md5hash = md5sum(签名串) = md5sum(/资源URI~模板.输出格式-timestamp-rand-uid-主鉴权密钥) = md5sum(/1.jpg~tplv-service-image.image-1627287282-rand-imagex-94d76db810e3a074fa6b628f92bfe575) = 9a8229123604d22d18b6dcfe44b4519e
  • 生成的鉴权 URL:http://imagex.e7e7e7.com/1.jpg~tplv-service-image.image?sign=1627287282-rand-imagex-9a8229123604d22d18b6dcfe44b4519e

注意事项

  • CDN 缓存:开启了鉴权方式 A 的域名,访问 URL 中携带了签名参数,CDN 进行缓存时,会自动忽略签名参数进行缓存,不会影响域名缓存命中率。

  • 回源:对于通过 CDN 鉴权但未命中缓存的 URL,CDN 节点会发起回源请求,回源请求会去掉 query 中的签名参数,源站无需特殊处理。

Demo 示例

我们已提供 Python Demo 以及 Go Demo 示例,具体的实现方法请参考鉴权示例