全部产品
阿里云办公

直播鉴权

更新时间:2018-06-28 14:35:16

URL 鉴权功能旨在保护用户站点的内容资源不被非法站点下载盗用。

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

注意:新添加的域名在2018年1月1日后默认开启鉴权,鉴权key随机分配,您可采用默认鉴权,也可在控制台中自定义。

鉴权 URL 组成

组成部分

直播推流/播放部分地址 + 验证串,验证串是根据鉴权 key + 失效时间通过 md5 算法计算出,该地址适用于 PC 端、移动端、第三方推流和播放工具。

  • 鉴权 KEY 字段随机分配,也支持用户自定义。

  • 有效时间 指用户访问客户源服务器时间超过自定义的时间(timestamp 字段指定)后,该鉴权失效。例如,有效时间为 1800s,用户设置访问时间:2020-08-15 15:00:00,链接真正失效时间是:2020-08-15 15:30:00。

URL 鉴权原理说明

用户访问加密 URL 构成
  1. http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
鉴权字段描述
字段 描述
timestamp 失效时间,整形正数,固定长度 10,1970 年 1 月 1 日以来的秒数。用来控制失效时间,10 位整数,有效时间 1800s
rand 随机数,建议使用UUID (不能包含中划线”-“,如: 477b3bbc253f467b8def6711128c7bec 格式)
uid 暂未使用(设置成 0 即可)
md5hash 通过 md5 算法计算出的验证串,数字和小写英文字母混合 0-9a-z,固定长度 32

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

  • HashValue 是通过以下字符串计算出来的,

    1. sstring = "URI-Timestamp-rand-uid-PrivateKey"URI是用户的请求对象相对地址,不包含参数,如:/Filename

    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. 服务器会构造一个用于计算 Hashvalue 的签名字符串

    1. /video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234
  5. 服务器会根据该签名字符串计算 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 值一致,于是鉴权通过。

    注意:鉴权功能也可以关闭,建议您保持默认开启状态,以减少直播被盗录、盗播的风险。

鉴权配置

  • 默认鉴权

    鉴权功能默认为开启状态,其中,鉴权key随机分配,有效时长 1800 秒。超过有效时间,鉴权失效。

    1. 登录 视频直播控制台

    2. 单击 域名管理

    3. 选择所需的地域。

    4. 选择所需的域名,并单击右侧的 管理

      2

    5. 基本信息 > 中心推流信息 中,单击 鉴权配置 右侧的 去生成鉴权URL

      2

    6. 生成鉴权URL 页面,单击 开始生成

      注意:推流地址会自动在地址栏中生成一个Demo地址,播流地址需要您根据播放需求自主拼接。如果您要使用自定义的 AppName 和 StreamName,您需要将推流地址中的 AppName 和 StreamName 替换为自定义的 AppName 和 StreamName,然后再生成鉴权 URL。

    7. 单击生成的 URL鉴权地址 进行复制。

      2

    8. 单击 确定

      获得的 鉴权URL:rtmp://video-center.alivecdn.com/AppName/StreamName?vhost=live.aliyuntest.club&auth_key=*********,可用于推流。

      注意:鉴权的使用以域名级别进行配置,若域名下鉴权功能开启,该域名下的所有推流地址均必须执行鉴权加密操作。同时,推流对应的播放地址也进行鉴权加密,请使用加密后的地址执行播放操作。

    • 自定义鉴权

      如不采用默认配置,您可以对鉴权 主KEY备KEY有效时长AppNameStreamName 等进行自定义,然后再生成 鉴权URL 进行推流。

      1. 基本信息 > 中心推流信息 中,单击 鉴权配置 右侧的图标,进行修改。

      2. 鉴权配置 页面,对 主KEY备KEY有效时长 进行配置,并单击确定

        2

        注意:主KEY 是计算加密字符串的一个密钥。若 主KEY 执行更换,所有使用 主KEY 的地址会立即失效。备KEY 作为 主KEY 需要更换时,使用 主KEY 的推流或播放地址不会马上中断,先使用 备KEY 做为更换的桥接。

      3. 单击 鉴权配置 右侧的 去生成鉴权URL, 在 生成鉴权 URL 页面对 AppNameStreamName 进行自定义。

        原始URLrtmp://video-center.alivecdn.com/AppName/StreamName?vhost=live.aliyuntest.club,其中,

        • video-center.alivecdn.com是直播中心服务器,允许自定义。例如,您的域名是live.aliyuntest.club(注意:该域名不可以和您的直播加速域名相同),可以设置 DNS,将您的域名 CNAME 指向video-center.alivecdn.com即可。

        • AppName是应用名称,支持自定义。

        • StreamName是流名称,支持自定义。

        • vhost参数是最终在边缘节点播放的域名,即您的直播加速域名。

本文导读目录