防盗链功能使用说明
1 功能简介
防盗链是指在点播视频播放地址中通过添加鉴权字符串的方式,来校验地址合法性的一种防止视频被盗播的方式。开通防盗链功能后,视频播放地址中需要包含一段鉴权字符串,只有合法生成的鉴权串,才可以通过校验从而播放,且该地址有时效性,只在设定的有效期内可播放。这样即使别人获取到已失效的地址,也是无法继续使用的,防止别人盗播视频。如果已经使用有效的地址正在播放,不会因为地址超时失效而受影响。
2 功能原理
这里防盗链是利用URL鉴权来实现的,该功能是通过云信CDN加速节点与用户资源站点配合实现:
- 用户资源站点提供给终端用户加密 URL(资源地址加权限验证信息);
- 终端用户使用加密后的 URL 向云信加速节点发起请求;
- 加速节点对加密 URL 中的权限信息进行验证以判断请求的合法性,对合法请求正常响应,并拒绝非法请求,从而达到防止盗播的目的。
3 具体步骤
主要步骤如下所示:
第一步:开通功能
用户可联系网易云信确认开通防盗链功能。
第二步:设置防盗链加密凭证
用户可以通过云信管理控制台设置生成防盗链URL中鉴权串的加密Key。加密Key分为主Key和备Key,两个Key具有同样的效力,主要用于解决Key替换时的平滑过渡。如下图所示:
第三步:设置防盗链有效期
用户可以通过云信管理控制台设置防盗链URL鉴权串有效期,默认为120分钟。
第四步:生成播放地址
当前版本服务中,用户通过管理控制台或者服务端API获取到的视频地址默认会带着鉴权字符串,即获取到的就是完整的可播放地址,有效期取决于用户的设置。用户也可以以下鉴权方法进行拼接,参见下文。
4 鉴权方法
4.1 防盗链URL构成
点播防盗链URL由资源地址加上鉴权字符串构成:
http://domainName/bucketName/objectKey?wsSecret=XXXXXX&wsTime=XXXXXX
其中,wsTime是生成校验字符串时的时间戳(单位秒),wsSecret是根据一定规则生成的加密字符串,见下文。
4.2 鉴权字符串生成
校验字符串wsSecret计算规则如下:
wsSecret=encoderByMd5With32Bit(secretKey + "/" + bucketName + "/" + objectKey + wsTime)
其中,secretKey是用户在本文第3节第二步设置的加密秘钥,bucketName和objectKey唯一标识了用户的某一视频资源,加密算法是32位md5算法。
举例说明,假设用户某视频资源的原始地址是:
http://vodk32ywxdf.vod.126.net/vodk32ywxdf/da9644d1-2dc5-40e3-9fbb-2b40d4267518.mp4
用户设置的防盗链加密秘钥secretKey是"mySecretKey",生成校验字符串的时间戳是1556279147,那么按照上述规则计算生成的校验字符串wsSecret为:
wsSecret=encoderByMd5With32Bit(mySecretKey/vodk32ywxdf/da9644d1-2dc5-40e3-9fbb-2b40d4267518.mp41556279147)
4.3 鉴权方法
CDN边缘节点收到播放请求时做如下校验:
- 防盗链URL中wsTime时间加用户设置的防盗链过期时间小于收到请求的当前时间;
- 校验字符串wsSecret合法。
4.4 替换加密凭证
主Key和备Key拥有同样的效力,备Key主要是用来做Key的平滑更换,若主Key需要更换,更新后所有使用主Key生成的播放地址会立即失效,这时用备Key可以继续替代主Key提供服务。