全部产品
Search
文档中心

视频直播:访问控制

更新时间:Apr 24, 2025

播流域名通过多种访问控制策略,包括URL鉴权、Referer防盗链、IP黑白名单、协议禁播、区域封禁和远程鉴权,有效防止非法盗用和未授权访问,并且提升直播服务的安全性和用户体验。用户可根据自身业务和安全需求,合理选择和配置相应的访问控制策略,确保直播资源的安全和稳定运行。

概览

播流域名访问控制是确保资源安全和防止非法盗用的重要手段,主要包括以下几种方式:

  • URL鉴权:URL鉴权可以有效防止Refer防盗链方式无法彻底保护的问题,确保每个请求的合法性。

  • Referer防盗链:通过Referer防盗链配置自定义黑/白名单及规则内容,允许或拒绝播放请求,保护直播内容。

  • IP黑白名单:IP黑白名单可以限制或允许特定IP地址的访问,实现对访客身份的识别和过滤。

  • 协议禁播:通过对当前域名的播放协议进行限制,开启禁用后,该域名下对应的播放协议将无法使用,禁用协议生成的播放地址请求会被拒绝。

  • 区域封禁:通过播放地域管理配置可以指定播放地域的黑白名单,对当前域名的播放地域进行管理。

  • 远程鉴权:远程鉴权则可以将用户请求转发至指定的鉴权服务器进行校验,进一步增强访问控制的灵活性和安全性。

URL鉴权

功能介绍

URL鉴权功能通过阿里云视频直播服务与客户业务服务配合,形成了更为安全可靠的直播资源防盗方法。

  1. 客户的直播业务服务端提供加密URL,URL中包含权限验证信息。

  2. 推流或播放用户使用加密后的URL向阿里云直播服务发起请求。

  3. 阿里云直播服务加速节点对加密URL中的权限信息进行验证,判断请求的合法性。正常响应合法请求,拒绝非法请求。

重要

您的请求URL经过阿里云直播服务鉴权后,URL中的特殊字符,例如:=+等会被转义。

了解更多关于URL鉴权的适用场景、鉴权URL的组成、原理等,请参见推/播流地址鉴权

配置URL鉴权

  1. 登录视频直播控制台
  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制

  5. 单击URL鉴权页签,单击修改配置

    修改配置

    说明

    初次添加域名时,默认开启URL鉴权,仅开启时可修改配置

  6. 配置URL鉴权信息,单击确定

    URL鉴权配置

    配置项和说明如下表所示。

    配置项

    说明

    鉴权类型

    视频直播播流域名仅支持使用鉴权A,来实现对源站资源的有效保护。

    说明

    URL鉴权错误,都会返回403报错,请重新计算。

    • MD5计算类错误

      例如:X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760be

    • 时间类报错

      例如:X-Tengine-Error:denied by req auth: expired timestamp=1439469547

    主KEY

    当您添加域名时,控制台会随机生成一个主用密码。您可以通过在直播控制台左侧的导航栏选择域名管理,选择您需要配置的域名,单击域名配置 > 访问控制 > URL鉴权,在URL鉴权页面查看主用密码。您还可以重新输入自定义的鉴权方式对应的主用密码。

    备KEY

    输入自定义的鉴权方式对应的备用密码。

    说明
    • 主Key或备Key拥有同样的效力,备Key主要用于平滑更换。

    • 若主Key执行更换,以主Key生成的鉴权URL将会失效。在更换时将旧的主Key写入备Key,可以让备Key继续替代主Key提供服务。

    有效时长

    有效时长指URL鉴权在有效期内可用来发起推流或播放。直播推流和播放是长链接行为,已发起的不会因有效期过期而中止,但新请求会因过期而失败。新域名默认有效时长为1天(1440分钟)。您可以自定义有效时长,最小1分钟,无上限。

关闭URL鉴权

说明
  • 关闭URL鉴权前,请了解盗刷风险并签署《关闭URL鉴权免责协议》。

  • 关闭URL鉴权后,可生成永久有效的推流或播流地址。

  1. URL鉴权页签,单击去签署

  2. 签署协议对话框中,选中复选框,并单击签署协议

  3. 《关闭URL鉴权免责协议》签署成功,单击确定

  4. 关闭鉴权URL开关。关闭后,将不能通过设置鉴权KEY对URL进行加密。

Referer防盗链

功能介绍

防盗链功能通过HTTP协议的Referer机制识别请求来源,支持黑名单或白名单机制。视频直播节点根据预设名单过滤访客身份,符合规则的用户可访问资源,不符合规则的用户将收到403响应。

说明
  • 防盗链是可选配置,默认不启用。

  • 黑白名单互斥,同一时间您只能选择一种方式。

  • 配置防盗链后,视频直播支持自动添加泛域名。例如,如果您填写example.com,则最终配置生效的是*.example.com,所有子级域名都会生效。

  • 您可以设置是否允许空Referer字段访问资源,即允许通过浏览器地址栏直接访问资源URL。

    • 由于移动端一般获取不到referer,目前默认支持空referer访问。如果设置为不允许空referer访问,在移动端可以配合阿里云播放器SDK设置referer。

    • 当您设置不允许空referer访问时,请务必配置HTTPS 安全加速,并开启强制跳转HTTPS(HTTP > HTTPS),部分浏览器处理HTTPS请求HTTP的资源时,会移除referer,导致无法访问。

操作步骤

  1. 登录视频直播控制台
  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制

  5. 单击Referer防盗链页签,开启Referer防盗链

    开启

  6. 配置Referer类型规则,单击确定

    配置防盗链

    Referer防盗链类型及说明如下表所示。

    类型

    说明

    黑名单

    黑名单内的域名均无法访问当前的资源。

    白名单

    只有白名单内的域名能访问当前资源,白名单以外的域名均无法访问当前的资源。

IP黑白名单

功能介绍

  • 添加IP到黑名单,该IP无法访问当前加速域名。

  • 添加IP到白名单,只有该IP能够访问当前加速域名。

说明
  • IP黑名单和白名单均支持IPv6地址(地址中的字母仅支持大写字母),例如:2001:DB8:0:23:8:800:200C:417A或2001:0DB8:0000:0023:0008:0800:200C:417A。IPv6地址不支持缩写格式,例如:2001:0DB8::0008:0800:200C:417A。

  • IP黑名单和白名单均支持IP网段添加。例如:192.168.0.0/24,24表示采用子网掩码中的前24位有效位,即用32-24=8bit来表示主机号,该子网可以容纳2^8-2=254台主机。故192.168.0.0/24表示IP网段范围是:192.168.0.1~192.168.0.254。

操作步骤

  1. 登录视频直播控制台
  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制
  5. 单击IP黑/白名单页签,开启IP黑/白名单

    开启黑白名单

  6. 配置名单类型规则,单击确定

    配置黑白名单-chs

    类型说明
    黑名单黑名单内的域名均无法访问当前的资源。
    白名单只有白名单内的域名能访问当前资源,白名单以外的域名均无法访问当前的资源。

协议禁播

功能介绍

协议禁播功能是对播流域名(包括主、子播流域名)进行协议级别的禁播,开启后该域名指定协议的播放地址将无法播放直播流。

除了控制台,您还可以通过调用BatchSetLiveDomainConfigs接口,通过Functions参数传入alilive记录,详情请参见批量配置域名

操作步骤

  1. 登录视频直播控制台

  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制
  5. 单击协议禁播页签,选择需要禁播的协议,开启禁播功能。

    禁播

区域封禁

功能介绍

区域封禁功能通过识别客户端访问请求来源区域,拦截特定区域的访问或者只允许特定区域的访问,解决部分地区高发的恶意请求、内容分发版权等问题。

说明
  • 目前支持播放协议为HLS、RTMP、FLV、RTS的封禁功能。

  • 目前域名粒度区域封禁和流粒度区域封禁,如果同时针对某一区域配置域名粒度的白名单和流粒度黑名单,则会针对此区域执行流粒度的黑名单封禁操作。如果同时针对某一区域配置域名粒度的黑名单和流粒度白名单,则会针对此区域执行域名粒度的黑名单封禁操作。

  • 支持同时设置域名区域封禁直播流区域封禁,如果两者黑白名单产生冲突,禁止访问区域则以配置的黑名单为准。

域名区域封禁

  1. 登录视频直播控制台

  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制
  5. 区域封禁页签,开启区域域名封禁开关,选择封禁类型禁止访问区域

    参数

    说明

    封禁类型

    • 黑名单:黑名单内的区域均无法访问播流域名下的所有资源。

    • 白名单:只有白名单内的区域能访问播流域名下的资源,白名单以外的区域均无法访问。

    黑名单和白名单互斥,同一时间只支持其中一种方式生效。

    禁止访问区域

    设置黑白名单的区域。

  6. 单击确定,完成配置。

直播流区域封禁

  1. 登录视频直播控制台

  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制
  5. 单击区域封禁页签,在直播流区域封禁下单击添加封禁添加封禁..png

    参数

    说明

    AppName

    直播流应用名称。

    说明

    AppName不超过256字符,支持数字、大小写字母、短划线(-)、下划线(_)、等号(=)。且需和直播地址中的AppName一致,封禁规则才能生效。

    StreamName

    直播流的流名称。

    说明

    StreamName不超过256字符,支持数字、大小写字母、短划线(-)、下划线(_)、等号(=)。且需和直播地址中的StreamName一致,封禁规则才能生效。

    封禁类型

    • 黑名单:黑名单内的区域均无法访问播流域名下的所有资源。

    • 白名单:只有白名单内的区域能访问播流域名下的资源,白名单以外的区域均无法访问。

    说明

    黑名单和白名单互斥,同一时间只支持其中一种方式生效。

    访问区域

    设置黑白名单的访问区域。

    失效时间

    封禁规则的失效时间。默认封禁规则有效期为7天,可根据需求进行调整

  6. 单击确定,完成配置。

  7. 查看直播流区域封禁列表。配置完直播流区域封禁后,您可以在封禁列表中进行刷新,即可查看直播流封禁的状态。可按照黑白名单、AppName、StreamName对直播流封禁列表进行查询。

远程鉴权

功能介绍

远程鉴权和URL鉴权都用于保护直播资源,让资源只被授权成功的用户访问。两者在技术实现方案上有如下差异

  • URL鉴权:用户把域名的鉴权规则下发给直播中心,由直播中心完成鉴权的整个数据交互流程。

  • 远程鉴权:用户有自己单独设置的鉴权服务器,直播中心收到用户请求后,需要把用户请求转发给鉴权服务器完成鉴权,鉴权服务器由用户自主建立和管理远程鉴权不支持HLS协议。

远程鉴权功能的数据交互流程如下:

image

序号

交互说明

用户向直播中心发起资源访问请求,请求中携带了鉴权参数。

直播中心收到用户请求,将用户请求直接转发(或者经过指定的规则处理后转发)给鉴权服务器。

鉴权服务器根据用户请求中携带的鉴权参数给出鉴权结果,并返回给直播中心

直播中心根据鉴权服务器返回的鉴权结果执行对应的动作,并返回对应的数据给用户。

  • 举例1:鉴权成功,直播中心与用户开始正常的缓存数据访问交互。

  • 举例2:鉴权失败,直播中心返回403状态码给用户。

  • 举例3:鉴权超时,直播中心执行鉴权超时的默认动作,即放行或者拒绝用户请求。

操作步骤

  1. 登录视频直播控制台
  2. 在左侧导航栏单击推/播流域名管理,进入域名管理页面。

  3. 选择您要配置的播流域名,单击域名配置

  4. 单击直播管理 > 访问控制
  5. 单击远程鉴权页签,打开远程鉴权开关,根据界面提示,配置远程鉴权参数信息。

    说明

    开启远程鉴权功能后,用户的每次请求都要转发给鉴权服务器处理,当请求访问量大时,需考虑鉴权服务器的压力和性能。

    参数

    说明

    鉴权服务器地址

    鉴权服务器对外可以访问的地址。系统会对您输入的鉴权服务器地址进行校验,包括格式校验和值校验,支持设置固定URL或变量拼接URL。

    • 固定URL:支持HTTP(S)协议,值不能包含127.0.0.1和localhost,因为这类本地地址属于无效地址。格式请参考以下几种类型:

      • http(s)://example.aliyundoc.com/auth

      • http(s)://192.0.2.1/auth

    • 变量拼接URL:您可以通过变量拼接的方式生成鉴权URL作为鉴权服务器的地址,具体变量拼接URL的规则请参见变量拼接URL

    透传请求URL参数

    用于控制用户请求URL中需要参与鉴权的参数。可以选择透传指定参数不透传指定参数不透传请求URL参数

    说明

    如果选择透传指定参数不透传指定参数,请在下方输入框中输入需要透传的指定参数,多个参数用英文逗号(,)分隔,例如:key1,key2,key3

    鉴权结果对应状态码

    鉴权服务器在鉴权成功时返回给直播中心的HTTP状态码。可以选择设置以下状态码:

    • 鉴权成功状态码:选择鉴权成功状态码后请在下方输入框输入自定义的成功状态码,只有鉴权服务器返回此状态码,直播中心才放行用户请求,返回其他状态码均拦截用户请求。

      例如,将鉴权成功状态码设置为200,当鉴权服务器返回200时,表示鉴权成功。

    • 鉴权失败状态码:选择鉴权失败状态码后请在下方输入框输入自定义的失败状态码,只有鉴权服务器返回此状态码,直播中心才拦截用户请求,返回其他状态码均放行用户请求。

      例如,将鉴权失败状态码设置为403,当鉴权服务器返回403时,表示鉴权失败。

    鉴权时长(秒)

    统计的是从直播中心发起鉴权请求开始,到直播中心收到鉴权服务器返回的结果为止的时间。

    鉴权时长支持0~30的整数。

    鉴权超时重试次数

    鉴权时长超过上面设置的鉴权时长后,重新请求鉴权服务器的次数。重试次数达到设置的次数之后,将会执行下方设置的鉴权超时之后的动作,支持通过拒绝这两种动作。

    鉴权超时之后的动作

    直播中心与鉴权服务器之间的数据交互超时后,直播中心对用户请求的处理。支持通过拒绝这两种动作,区别如下:

    • 通过:鉴权超时,直播中心将直接允许用户请求。

    • 拒绝:鉴权超时,直播中心拒绝用户请求,直播中心返回鉴权失败状态码(例如:403状态码)给用户。

    异步鉴权(高级配置)

    开启时,播放的时候不再同步等待远程鉴权结果,可以先播放,如果后续拿到远程鉴权结果错误,再断开播放,避免同步远程鉴权耗时导致首屏时间增加的问题。

  6. 单击确定,完成参数配置。

    成功配置远程鉴权功能后,您可以在远程鉴权页签下,对当前的配置进行修改或关闭远程鉴权功能。

变量拼接URL

您可以通过变量拼接的方式生成鉴权URL作为鉴权服务器的地址,具体说明如下:

类型

说明

数字变量

数字变量例如${1}${2},用于引用推流或播放URL中?前面的部分。

例如推流URL为rtmp://domain.aliyundoc.com/appname/streamname?token=1&name=xr,那么${1}=appname${2}=streamname

字母变量

字母变量例如${arg_token}${arg_name},用于引用推流或播放URL中?后面的部分。

例如推流URL为rtmp://domain.aliyundoc.com/appname/streamname?token=1&name=xrc,那么${arg_token}=1${arg_name}=xrc

自定义变量

自定义变量以udv_前缀开头,自定义变量目前支持${udv_host}${udv_ip},分别用于引用host和推流端IP。

ngx变量

所有的ngx.var.*的变量可以直接引用,例如${args}可以引用ngx.var.args

所有通过变量引用的值在拼接鉴权地址时,都会被URL转义函数ngx.escape_uri处理,避免特殊字符引起歧义。

流名变量

支持添加videoname=${stream_name} 的形式,${stream_name}会被播放请求的流名所替代。

说明

如果推流或播流地址为rtmp://domain.aliyundoc.com/app/stream?token=***&name=xrc

远程鉴权服务器的地址配置为http://auth.aliyundoc.com/?app=${udv_host}&streamname=${2}&appname=${1}&token=${arg_token}

则实际鉴权的地址为http://auth.aliyundoc.com/?app=domain.aliyundoc.com&streamname=stream&appname=app&token=***