You need to enable JavaScript to run this app.
导航
鉴权方式 A
最近更新时间:2025.02.17 17:10:12首次发布时间: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. 分发配置页签的域名信息中,单击域名的管理按钮。
    Image

  3. 切换到访问控制标签页,打开 URL 鉴权按钮,开始配置 URL 鉴权。
    具体参数信息如下表所示。

    参数

    说明

    主鉴权密钥

    指定主鉴权密钥,由 6-40 位大小写字母与数字组成,必填。

    备用鉴权密钥

    指定备用鉴权密钥,与主鉴权密钥的配置规则相同,选填。

    鉴权参数名

    请求的鉴权参数名称,由 1-100 位大小写字母、数字、下划线组成,默认为 sign。

    有效时间

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

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

    说明

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

    Image

鉴权示例

假设待签资源信息如下所示:

  • 域名:imagex.e7e7e7.com
  • 资源 URI:1.jpg
  • 模板:tplv-service-image
  • 格式:image
  • timestamp:1627287282
  • rand:rand
  • uid:imagex

配置 URL 鉴权参数如下:

  • 鉴权模式:A
  • 主鉴权密钥:94d76db810e3a074fa6b628f92bfe575
  • 签名参数名:sign
  • 有效时间:1800s

鉴权 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 示例

我们已提供多种语言的鉴权示例,具体的实现方法请参考鉴权示例