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

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

鉴权 URL 组成

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

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

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

鉴权 URL 原理说明

用户访问加密 URL 构成
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 是通过以下字符串计算出来的,
sstring = "URI-Timestamp-rand-uid-PrivateKey"(URI是用户的请求对象相对地址,不包含参数,如:/Filename)
HashValue = md5sum(sstring)
示例说明
  1. 通过 req_auth 请求对象。http://cdn.example.com/video/standard/1K.html
  2. 密钥设为:aliyuncdnexp1234(由用户自行设置)。
  3. 鉴权配置文件失效日期为:2015年10月10日00:00:00,计算出来的秒数为 1444435200。
  4. 服务器会构造一个用于计算 Hashvalue 的签名字符串。/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234
  5. 服务器会根据该签名字符串计算 HashValue。HashValue = md5sum("/video/standard/1K.html-1444435200-0-0-aliyuncdnexp1234") = 80cd3862d699b7118eed99103f2a3a4f
  6. 请求时 URL 为 http://cdn.example.com/video/standard/1K.html?auth_key=1444435200-0-0-80cd3862d699b7118eed99103f2a3a4f

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

URL 鉴权代码示例

参见 鉴权代码示例

操作步骤

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

当鉴权功能开启时,有默认鉴权和自定义鉴权两种鉴权方式,您可按需选择默认鉴权或自定义鉴权。

默认鉴权

默认鉴权中,鉴权key随机分配,有效时长 30 分钟。超过有效时间,鉴权失效。
  1. 登录 视频直播控制台
  2. 单击 直播管理 > 地址生成器 > 边缘推流
    说明 边缘推流可以把视频推流至最优 CDN 节点,以减少卡顿、拉流缓慢的问题。建议您优先选择 边缘推流
  3. 选择需要鉴权的 播流域名关联的推流域名,输入相应的 AppNameStreamName,并单击 开始生成

    说明 您可以按需对推流域名或播放域名进行鉴权。建议您对推流域名和播流域名都进行鉴权,以减少直播被盗录、盗播的风险。
    您可以获得鉴权的推流地址和播流地址。

自定义鉴权

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

  1. 登录视频直播控制台。
  2. 单击 域名管理, 选择您想要自定义鉴权的域名,并单击 域名配置
  3. 单击 访问控制,选择 URL 鉴权,并单击 修改配置

    您还可以在 直播管理 > 地址生成器 > 边缘推流 中,单击 播流域名关联的推流域名 下方的 去修改 快速进入自定义鉴权页面。

  4. URL 鉴权 页面,对 主KEY副KEY有效时长 进行自定义配置,并单击 确定

    说明 主KEY 是计算加密字符串的一个密钥。若 主KEY 执行更换,所有使用 主KEY 的地址会立即失效。 副KEY 的作用是,当 主KEY 需要更换时,使用 主KEY 的推流或播放地址不会马上中断, 副KEY 做为更换的桥接。
  5. 直播管理 > 地址生成器 > 边缘推流 中,选择需要鉴权的 播流域名关联的推流域名,输入相应的 AppNameStreamName,并单击 开始生成

    您可以获得鉴权的推流地址和播流地址。