梗概

  • 在服务端后台开启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。

  • 拼接流程

    1. CDN服务器构造出一个用于计算md5hash签名字符串

      /video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234
    2. 根据该签名字符串,CDN服务器会计算出md5hash

      md5hash = md5sum("/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234") = 23bf85053008f5c0e791667a313e28ce
    3. 生成鉴权URL。

      http://domain.example.com/video/standard/test.mp4?auth_key=1444435200-0-0-23bf85053008f5c0e791667a313e28ce

当使用客户端提供的加密URL进行访问时,如果CDN服务器计算出来的md5hash值与访问请求中带的md5hash值相同,都为_23bf85053008f5c0e791667a313e28ce_,则鉴权通过,反之鉴权失败。