• 沒有找到結果。

2.6 访问控制

2.6.5 URL 鉴权

2.6.5.1 鉴权方式 A

CDN分发的内容默认为公开资源,URL鉴权功能主要用于保护用户站点资源,防止资 源被用户恶意下载盗用。华为云CDN提供了4种URL鉴权配置。本章为您详细介绍鉴权 方式A的实现方式。

说明

● 如果您的域名有特殊配置,暂不支持控制台自助配置URL鉴权。

● 配置鉴权后,用户将携带鉴权参数访问。如果您没有配置“忽略URL参数”:

会增大回源概率。

如果您的源站为对象存储桶,将会产生桶的流量流出费用。

原理说明

访问加密URL构成:

http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash http://DomainName/Filename?auth_key=timestamp-rand-uid-sha256

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

字段 描述

DomainNam

e CDN加速域名。

timestamp 用户定义的有效访问时间起始点,值为1970年1月1日以来的当前时 间秒数 ,十进制整数。

字段 描述

有效时间 鉴权有效的时间长度,取值为0~31536000s。

示例:如果设置有效时间为1800s,则用户可在从timestamp开始 的1800s内访问CDN。超出该区间,鉴权失败。

rand 随机数,建议使用UUID (不能包含中划线“-”,如:

202cb962ac59075b964b07152d234b70 格式)。

uid userID。暂未使用(设置成0即可)。

md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合 组成,固定长度32。

sha256 通过sha256算法计算出来的验证串,数字0-9和小写英文字母a-z混 合组成,固定长度32。

Filename 实际回源访问的URL,鉴权时Filename需以/开头。不包含?后面的 参数。

PrivateKey 用户设定的鉴权密钥,来生成加密URL。如huaweicloud123。密钥 的格式为大小写字母、数字,长度6到32。

鉴权参数名 用户url中携带的鉴权信息参数名,默认为auth_key。

校验方法

CDN服务器拿到请求后,会按照如下步骤进行校验:

1. 是否携带鉴权参数。如果没有携带鉴权参数,认为请求非法,返回HTTP 403错 误。

2. 时间校验:判断系统当前时间是否在区间[timestamp,timestamp+有效时间]

内。超出该区间,认为过期失效并返回HTTP 403错误。

3. 加密串校验:时间校验通过后,则以sstring方式构造出一个字符串(参考以下 sstring构造方式)。然后使用md5(sha256)算法算出HashValue,并和用户请 求中带来的md5hash(sha256)进行对比。结果一致则认为鉴权通过并返回文 件,否则鉴权失败返回HTTP 403错误。HashValue计算方式如下:

sstring = "Filename-Timestamp-rand-uid-PrivateKey"

HashValue = md5sum(sstring)

或:sstring = "Filename-Timestamp-rand-uid-PrivateKey"

HashValue = sha256sum(sstring)

操作步骤

1. 登录华为云控制台,在控制台首页中选择“CDN与智能边缘 > CDN”,进入CDN 控制台。

2. 在左侧菜单栏中,选择“域名管理”。

3. 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页 面。

5. 参照下表配置参数,单击“确定”,完成配置。

参数 说明

鉴权KEY 鉴权密码,6~32位大/小写字母、数字构成。

加密算法 用于信息加密的算法,可选MD5或SHA256。

有效时间长度 鉴权URL的有效时间,取值为0~31536000s。

鉴权计算器

鉴权计算器是为了方便您生成鉴权URL以供用户使用,根据参数提示设置不同的 参数后,单击“生成”即可生成鉴权URL和过期时间。

说明

如果您的鉴权URL中含有中文或特殊字符,请先进行URL转码(即Encode)后使用。

2-5 参数说明

参数 说明

鉴权KEY 鉴权密码,6~32位大/小写字母、数字构成,与鉴权配置中的 密码一致。

访问路径 资源所在路径,以/开头,无需携带参数。

加密算法 用于信息加密的算法,可选MD5或SHA256。

开始时间 鉴权URL的生效起始时间。

有效时间长度 鉴权URL的有效时间,取值为0~31536000s,最大值为鉴权配 置中设置的有效时间。

示例:鉴权配置中设置的有效时间长度为1800秒,鉴权计算器 中设置2000秒,那么有效时间依然是1800秒。

示例说明

1. 通过req_auth请求对象:

http://hwcdn.example.com/T128_2_1_0_sdk/0210/M00/82/3E/test.mp3

2. 密钥设为:huaweicloud123(由用户自行设置)

3. 鉴权生效开始日期为:2017年6月30日00:00:00,计算出来的秒数为 1498752000。并且设置有效时间为1800s。

4. CDN服务器构造一个用于计算HashValue的签名字符串:

/T128_2_1_0_sdk/0210/M00/82/3E/test.mp3-1498752000-0-0-huaweicloud123

5. CDN服务器根据该签名字符串计算HashValue:

HashValue = md5sum(“/T128_2_1_0_sdk/0210/M00/82/3E/test.mp3-1498752000-0-0-huaweicloud123”) = 40e64d69aac7d15edfc6ec8a080042cb

6. 请求时URL为:

http://hwcdn.example.com/T128_2_1_0_sdk/0210/M00/82/3E/test.mp3?

auth_key=1498752000-0-0-40e64d69aac7d15edfc6ec8a080042cb

如果请求在有效时间内(2017年6月30日00:00:00-2017年6月30日00:30:00),并 且计算出来的HashValue与用户请求中带的md5hash值

(40e64d69aac7d15edfc6ec8a080042cb)一致,则鉴权通过。