功能介绍
为保障直播资源不被非法盗用,避免产生不必要的带宽浪费,您可以使用视频直播的URL鉴权功能,在主播推流或播放URL中加上鉴权信息。在主播请求直播推流或观众请求播放时,CDN会对其URL带的加密信息进行合法性判断,仅校验通过的请求会予以响应,其它非法的访问将予以拒绝,从而有效地保护直播资源。
适用场景
- 需要对站点资源限制用户访问,避免资源被恶意下载或者非法盗用。
- 请求的资源都具有一定的时效性,超过时效则不允许访问。
注意事项
- 配置URL鉴权需要客户端跟CDN配合一起开启。
- 如果您的鉴权URL中含有中文或特殊字符,需先进行URL转码(即Encode)后使用。
前提条件
- 客户提供用于计算加密串的key值。
- 客户与CDN计算规则、校验逻辑统一。
鉴权原理
访问URL构成示例:http://DomainName/AppName/StreamName?encrypt=xxx×tamp=xxx。视频直播服务器拿到请求后,会按照如下步骤进行校验:
- 是否携带鉴权参数。如果没有携带鉴权参数,认为请求非法,返回HTTP 403错误。
- 时间校验:判断系统当前时间是否在时间戳有效期内。超出有效期,认为过期失效并返回HTTP 403错误。
- 加密串校验:时间校验通过后,比对CDN服务器计算出来的md5hash值与访问请求中带的md5hash值是否相同,结果一致则认为鉴权通过并返回直播流,否则鉴权失败返回HTTP 403响应码。
- md5hash规则:MD5(uri&time&key)【注意:"&"仅用于区分标识演示用途,实际不加入鉴权组合内】
操作步骤
以推拉流场景下的拉流域名为例,操作步骤如下:
-
登录直播控制台。
-
在【域名列表】页面,单击目标域名操作列中的【编辑】。
-
单击【访问控制】。
-
单击【URL鉴权】。
-
单击URL鉴权开关进行启用。
-
配置URL鉴权参数。
参数 说明 鉴权key 设定的鉴权秘钥,由大小写字母与数字组成。 时间戳参数名 请求URL中用于校验时间过期的参数名称。未配置时默认timestamp。 加密串参数名 请求URL中用于校验加密串的参数名称。未配置时默认为encrypt。 时间戳类型 鉴权URL的时间类型:
1. URL生成时间:值为1970年1月1日以来的当前时间秒数 。该场景下与鉴权URL有效时长共同控制鉴权URL的失效时间。鉴权URL实际有效期=timestamp+CDN配置的有效时长。
2. 过期时间:值为1970年1月1日以来的到鉴权过期时刻的时间秒数。该场景下通过视频直播服务器接收到客户端请求的系统时间与请求URL中的timestamp进行比对,来判断时间是否过期。有效时长 当【时间戳类型】选择【URL生成时间】时,需要配置该参数。 时间戳格式 时间戳参数支持16进制时间戳、10进制时间戳、以及年月日时分秒格式。 鉴权范围 支持配置需要鉴权的协议,例如只针对FLV请求配置URL鉴权。 -
配置完成后,单击【确定】。
-
单击页面右下方的【提交保存】。
配置示例
假设鉴权key为ctyuntest123、时间戳参数名为timestamp、加密串参数名为encrypt、时间戳类型为url生成时间、有效时长配置为600min、时间戳格式为年月日时分秒、鉴权范围为flv。
则鉴权URL生成示例如下:
- 原始url:http://DomainName/live/123.flv
- url生成时间:2024年3月19日15:00:00
- 鉴权key:ctyuntest123
- 时间戳参数名:timestamp
timestamp=20240319150000
- 加密串参数名:encrypt
encrypt=MD5(uri&time&key)=MD5(/live/123.flv20240319150000ctyuntest123)=f27fdb4f82f409e330803aa5896b111e
所以,携带鉴权参数的URL为:http://DomainName/live/123.flv?timestamp=20240319150000&encrypt=f27fdb4f82f409e330803aa5896b111e