使用场景

视频直播的推流端和播流端均提供了地址供用户操作,但该地址为公网地址,即在没有配置安全控制时任何人获知该地址后均可操作。这就导致该地址可能被恶意盗用而导致用户大量计费的情况。

另外,直播域名的跨域文件crossdomain.xml默认配置的所有域名均可跨域访问(配置如下)。因此,为了对推流、播流地址进行安全限制,您可以通过设置鉴权功能的过期时间戳。详情参见 配置鉴权

视频直播还提供Referer防盗链和IP黑名单的安全功能,您可以根据需要进行设置。详情参见 配置防盗链配置IP黑名单

<!--播流域名crossdomain.xml内容-->
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

			

鉴权原理

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

  1. 开启、关闭鉴权

    鉴权功能默认为开启状态,建议您保持默认开启状态,否则会出现直播被盗录、盗播的风险。如果您想要关闭鉴权功能,请与商务经理联系或提交工单申请。

  2. 设置鉴权参数

    在开启鉴权后在使用推流和播流地址时即需要添加鉴权权auth_key参数,详情参考 配置鉴权,归纳整个A鉴权流程如下:

    • 获取带鉴权的URL、鉴权Key值。例如,需要对如下推流地址使用aliyuntest这个Key值进行鉴权 ,key具体的值通过直播控制台 -> 地址生成器-> 鉴权,点击“去修改”查看,如下图rtmp://push.aliyunlive.com/AppName/StreamName?。

    • 定义鉴权过期时间戳。例如,定义过期时间为北京时间:2017-02-18 12:22:42,则对应的unix时间为1487391762。

    • 拼接签名字符串,拼接规则为URI-Timestamp-rand-uid-PrivateKey(URI是用户的请求对象相对地址,不包含参数),以上述信息为例得到的字符串为/AppName/StreamName-1487391762-0-0-aliyuntest。

    • 根据上述的字符串求取md5值,上述的字符串计算得到4CDBB95D5FA432A2DFCCEC5EF78FFF61。

    • 拼接后的鉴权URL即为:rtmp://push.aliyunlive.com/AppName/StreamName?&auth_key=1487391762-0-0-4cdbb95d5fa432a2dfccec5ef78fff61。

      注意:auth_key也是采用queryString的方式添加在URL中,如果该URL中本身有queryString请使用&与其他的参数拼接。

      鉴权的实例代码,参见 配置鉴权鉴权实例代码

  3. 常见问题

    • 开启鉴权后推流/播流地址均需要添加鉴权auth_key参数才可正常播放。暂时不支持仅推流或者播流一个地址开启鉴权的功能。

    • 鉴权URL提供的是过期时间戳的限制,即在该时间段内该地址可以一直访问,不会有任何限制,鉴权还无法实现设置某个URL仅能够一次访问的功能。

    • 鉴权功能默认为开启状态,但是配置鉴权auth_key参数必须需要业务端根据鉴权原理自行实现,暂时没有提供API接口计算鉴权auth_key参数。

    • 鉴权URL具有1800秒的有效时间,该有效时间表示该鉴权URL会在用户定义的过期时间戳的1800秒后实现,例如用户设置过期时间戳为2017-02-18 12:00:00,那么该鉴权URL真实过期时间是2017-02-18 12:30:00(2017-02-18 12:00:00+1800秒),该URL会在2017-02-18 12:00:00至2017-02-18 12:30:00时间段内仍然可以访问。

    • 鉴权auth_key参数是根据去掉queryString后的URI计算MD5值后拼接得到的,参见前述设置鉴权参数小节。因此,推流和播流地址的URI均为AppName/StreamName;这样会导致推流和播流地址的鉴权auth_key参数其实是一致的。建议用户业务逻辑中如果推流地址有泄漏的情况下设置过期时间戳在业务许可范围内尽量短一些,避免播流地址被恶意访问。

    • 鉴权仅会在推流或者播流开始的时候进行验证,在推流或者播流过程中即不会验证,也就是说推流或者播流过程中如果超过了鉴权时间戳也可以继续播放。