全部产品
视频点播

URL鉴权

更新时间:2017-07-19 17:41:52   分享:   

概述

URL鉴权功能旨在保护用户上传到视频点播的内容资源不被非法站点下载盗用。采用防盗链方法添加 referer 黑、白名单方式可以解决部分盗链问题,但是,由于 referer 内容可以伪造,referer 防盗链方式还不能很好的保护站点资源,因此采用URL鉴权方式保护用户源站资源更为安全有效。

原理

URL鉴权功能是通过阿里云CDN加速节点与客户资源站点配合实现的一种更为安全可靠的源站资源防盗方法。由CDN客户站点提供给用户加密 URL(包含权限验证信息),用户使用加密后的 URL 向加速节点发起请求,加速节点对加密 URL 中的权限信息进行验证以判断请求的合法性,对合法请求给予正常响应,拒绝非法请求,从而有效保护CDN客户站点资源。

准备

  • 要使用URL鉴权,需要先在点播控制台进行配置,如下图。

    主Key和备Key都只能输入大小写字母和数字,长度为6-32位。

    URL鉴权

  • 开启URL鉴权后,阿里云VOD的播放器SDK,以及获取播放地址的API/SDK都会自动生成带时效的播放URL;如果需要自己生成鉴权的动态URL,则请使用下述鉴权方法。

    开启URL鉴权后,视频、音频、封面、截图等地址都会进行鉴权。

  • 主Key和备Key拥有同样的效力,后者主要是为了做平滑更换。若主KEY执行更换,所有使用主KEY生成的播放地址会立即失效。备KEY作为主KEY需要更换时,使用主KEY的播放地址不会马上中断,可以使用备KEY做为更换的桥接。

鉴权方法

鉴权URL构成

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

鉴权URL由播放文件地址+验证串构成,验证串是根据鉴权key+过期时间通过md5算法计算得出,且具有时效性,目前最低支持1800s的有效时间。

鉴权字段描述

  • PrivateKey 字段用户可以自行设置,即控制台配置的主Key或备Key。
  • 有效时间1800s是指,用户访问客户源服务器时间超过自定义失效时间(timestamp字段指定)的1800s后,该鉴权失效;例如用户设置访问时间2020-08-15 15:00:00,链接真正失效时间是2020-08-15 15:30:00。
字段 描述
timestamp 失效时间,整形正数,固定长度10,1970年1月1日以来的秒数。用来控制失效时间,10位整数,有效时间1800s
rand 随机数,一般设成0
uid 暂未使用(设置成0即可)
md5hash 通过md5算法计算出的验证串,数字和小写英文字母混合0-9a-z,固定长度32

CDN服务器拿到请求后,首先会判断请求中的 timestamp 是否小于当前时间,如果小于,则认为过期失效并返回HTTP 403错误。如果 timestamp 大于当前时间,则构造出一个同样的字符串(参考以下sstring构造方式)。然后使用MD5算法算出 HashValue ,再和请求中带来的 md5hash 进行比对。比对结果一致,则认为鉴权通过,返回文件。否则鉴权失败,返回HTTP 403错误。

  • HashValue 是通过以下字符串计算出来的:
    1. sstring = "URI-Timestamp-rand-uid-PrivateKey" URI是用户的请求对象相对地址,不包含参数,如 /Filename
    2. HashValue = md5sum(sstring)

    示例说明

1. 通过 req_auth 请求对象:

  1. http:// cdn.example.com/video/standard/1K.html

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

3. 鉴权配置文件失效日期为:2015年10月10日00:00:00,计算出来的秒数为1444435200

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

  1. /video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234"

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

  1. HashValue = md5sum("/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234") = 80cd3862d699b7118eed99103f2a3a4f

6. 则请求时url为:

  1. http://cdn.example.com/video/standard/1K.html?auth_key=1444435200-0-0-80cd3862d699b7118eed99103f2a3a4f

计算出来的HashValue与用户请求中带的 md5hash = 80cd3862d699b7118eed99103f2a3a4f 值一致,于是鉴权通过

本文导读目录
本文导读目录
以上内容是否对您有帮助?