梗概
- 在服务端后台开启URL鉴权功能,并生成对称的密钥
- 最终需要访问CDN的客户端都需要保存该密钥,并在发送请求的时候将密钥拼接上其他内容,生成一个签名MD5值
- “其他内容”通常包括:
- 访问的路径
- 访问时的时间戳
- “其他内容”通常包括:
- 服务端接受到客户端请求时,也将服务端上保存的密钥拼接上其他内容,同样生成一个签名MD5值
- 这个“其他内容”与客户端的保持一致
- 为保持时间戳的一致,需要从客户端中接受请求时的时间戳
- 这个“其他内容”与客户端的保持一致
- 两者相比对,一致则鉴权通过
实例
鉴权URL示例
通过以下示例说明,您可以准确理解鉴权方式A的实现方式。
-
示例条件
-
回源请求对象:
http://domain.example.com/video/standard/test.mp4
说明如果您的回源请求对象中有中文汉字,请先对其进行URL转码(即Encode),再进行鉴权URL的拼接。
-
原始URL:
https://example.com/image/阿里云.jpg
-
编码后的URL:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
-
-
设置密钥为:aliyuncdnexp1234。
-
签算服务器生成鉴权URL的时间:2015年10月10日08:00:00(UTC+8),转换为十进制的整型数值为1444435200。
-
-
拼接流程
-
CDN服务器构造出一个用于计算
md5hash
的签名字符串。/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234
-
根据该签名字符串,CDN服务器会计算出
md5hash
。md5hash = md5sum("/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234") = 23bf85053008f5c0e791667a313e28ce
-
生成鉴权URL。
http://domain.example.com/video/standard/test.mp4?auth_key=1444435200-0-0-23bf85053008f5c0e791667a313e28ce
-
当使用客户端提供的加密URL进行访问时,如果CDN服务器计算出来的md5hash
值与访问请求中带的md5hash
值相同,都为_23bf85053008f5c0e791667a313e28ce_,则鉴权通过,反之鉴权失败。