空间鉴权配置
所有文档

          智能视联网平台 EVS

          空间鉴权配置

          空间鉴权配置默认对空间下所有设备同时生效,但如果设备有对应的配置项,则设备配置优先级将会高于空间配置。

          推流鉴权

          为保护监控设备推流地址不被非法占用,智能视联网平台提供推流鉴权功能,开启推流鉴权后,您可以通过加密后的地址进行推流。需要注意的是,空间的推流鉴权只对RTMP设备才起作用。

          image.png

          原理说明

          原始url:rtmp://<domain>/<app>/<stream>

          加密后url:rtmp://<domain>/<app>/<stream>?timestamp=<timestamp>&token=<token>

          加密字段解释:

          加密字段 描述
          <domain> 空间配置的推流域名,如果没有配置则使用EVS默认提供的域名。
          <app> RTMP设备的app参数,由用户自定义。
          <stream> RTMP设备的stream参数,由用户自定义。
          <timestamp> 为url的生成时间,unix时间戳,格式为10进制。时间戳 + 有效时间(控制台配置,精确到秒)即为加密URL的过期时间。例如有效时间配置成60分钟,timestamp的值为1590725840,意味着推流url生成时间是2020/5/29 12:17:20,那么对应的加密URL将在2020/5/29 13:17:20之后失效。
          <token> 通过sha256_hex算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度64。值为sha256_hex(content,key),content=<domain>/<app>/<stream>;<timestamp>, key=<key>。其中<key>是用户在EVS配置的密钥。

          智能视联网服务器接收到请求后,会执行如下校验:

          1. 解析请求中timestamp,如果(timestamp + 有效时间)小于当前时间,则认为加密url过期,鉴权失败,无法推流。
          2. 构造content(content=<domain>/<app>/<stream>;<timestamp>),然后使用sha256_hex算法算出一个验证穿,并与客户端请求中带来的token进行对比。如果一致则认为鉴权通过,否则鉴权失败,设备无法推流。

          示例说明

          1. 原始url:rtmp://test.evs.com/app/stream
          2. 设置密钥:abcdefg
          3. 设置有效时间:60分钟
          4. 用户推流url中的timestamp为1590734594,即:2020/5/29 14:43:14
          5. 用户拼接出content:test.evs.com/app/stream;1590734594
          6. 根据content字符串计算token = sha256_hex("test.evs.com/app/stream;1590734594","abcdefg") = 82bbbc3d528ec91b1e1b3a78f09b2e11c03a13110c924c1e99a419f8f8534cb3。
          7. 生成加密url为:rtmp://test.evs.com/app/stream?timestamp=1590734594&token=82bbbc3d528ec91b1e1b3a78f09b2e11c03a13110c924c1e99a419f8f8534cb3

          实时观看鉴权

          为保护监控设备被盗链播放,智能视联网平台提供实时观看鉴权功能,开启实时观看鉴权后,您可以通过加密后的地址进行监控流的实时观看。

          image.png

          原理说明

          实时观看提供三种播放协议,分别为RTMP/FLV/HLS。

          原始url:

          • RTMP:rtmp://<domain>/<app>/<stream>
          • FLV:http://<domain>/<app>/<stream>.flv
          • HLS:http://<domain>/<app>/<stream>.m3u8

          加密后url:

          • RTMP:rtmp://<domain>/<app>/<stream>?timestamp=<timestamp>&token=<token>
          • FLV:http://<domain>/<app>/<stream>.flv?timestamp=<timestamp>&token=<token>
          • HLS:http://<domain>/<app>/<stream>.m3u8?timestamp=<timestamp>&token=<token>

          加密字段解释:

          加密字段 描述
          <domain> 空间配置的推流域名,如果没有配置则使用EVS默认提供的域名。
          <app> RTMP设备的app参数,由用户自定义。
          <stream> RTMP设备的stream参数,由用户自定义。
          <timestamp> 为url的生成时间,unix时间戳,格式为10进制。时间戳 + 有效时间(控制台配置,精确到秒)即为加密URL的过期时间。例如有效时间配置成60分钟,timestamp的值为1590725840,意味着推流url生成时间是2020/5/29 12:17:20,那么对应的加密URL将在2020/5/29 13:17:20之后失效。
          <token> 通过sha256_hex算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度64。值为sha256_hex(content,key),content=<domain>/<app>/<stream>;<timestamp>, key=<key>。其中<key>是用户在EVS配置的密钥。

          EVS服务器接收到请求后,会执行如下校验:

          1. 解析请求中timestamp,如果(timestamp + 有效时间)小于当前时间,则认为加密url过期,鉴权失败,无法播放。
          2. 构造content(content=<domain>/<app>/<stream>;<timestamp>),然后使用sha256_hex算法算出一个验证穿,并与客户端请求中带来的token进行对比。如果一致则认为鉴权通过,否则鉴权失败,设备无法进行实时观看。

          示例说明

          以rtmp播放协议为例:

          1. 原始url:rtmp://test.evs.com/app/stream
          2. 设置密钥:abcdefg
          3. 设置有效时间:60分钟
          4. 用户推流url中的timestamp为1590734594,即:2020/5/29 14:43:14
          5. 用户拼接出content:test.evs.com/app/stream;1590734594
          6. 根据content字符串计算token = sha256_hex("test.evs.com/app/stream;1590734594","abcdefg") = 82bbbc3d528ec91b1e1b3a78f09b2e11c03a13110c924c1e99a419f8f8534cb3。
          7. 生成加密url为:rtmp://test.evs.com/app/stream?timestamp=1590734594&token=82bbbc3d528ec91b1e1b3a78f09b2e11c03a13110c924c1e99a419f8f8534cb3
          上一篇
          空间录像回放配置
          下一篇
          空间时移配置