全部产品
Search
文档中心

视频直播:远程鉴权

更新时间:Nov 20, 2023

视频直播支持将用户请求转发至您指定的鉴权服务器,由鉴权服务器对用户请求进行校验,校验通过即允许访问,校验失败拒绝访问或进行其他限制,有效避免您的资源被非授权用户访问。本文介绍配置远程鉴权的操作步骤。

功能介绍

远程鉴权和URL鉴权的作用一样,都用于保护直播资源不被非法盗用,让资源只被授权成功的用户访问,非授权用户将无法访问。

远程鉴权和URL鉴权在技术实现方案有如下差异:

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

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

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

image

序号

交互说明

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

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

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

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

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

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

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

使用说明

如果您首次使用远程鉴权功能,请先提交工单申请开通,开通后请按照操作步骤进行配置。

操作步骤

  1. 登录视频直播控制台
  2. 在视频直播控制台左侧导航栏,单击域名管理,进入域名管理页面。
  3. 选择您要配置的播流域名,单击域名配置

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

    说明

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

    参数

    说明

    鉴权服务器地址

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

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

      • http(s)://example.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://abc.com/appname/streamname?token=1&name=xr,那么${1}=appname${2}=streamname

字母变量

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

例如推流URL为rtmp://abc.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://abc.com/app/stream?token=***&name=xrc

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

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

相关API

批量配置域名