RTMP 推流认证的 adobe 用户认证原理与过程介绍

Adobe的FMS服务器支持推流时用户名+密码认证,这样保证了推流的安全性。

由于Adobe的推流认证的方法与过程在Adobe公开的RTMP协议说明文档里没有,只能根据逆向工程分析它的过程。

FMS支持两种推流认证,即adobe与llnw。本人对adobe方式进行了分析记录如下:

一、用户帐号产生方法:

Adobe FMS启用了认证以后,在FMS的安装目录的conf字幕里里会多出一个users.exe程序,用于产生用户数据库, users.dat文件为用户数据库文件。用users.exe程序添加一个用户, 用户名为 user2020,密码为 123456:

>users add -u user2020 -p 123456

在users.dat里将增加一条记录如下:

user2020:8wsAAA==:ICbruj1yNoAtrODdBhFTSQ==

这条用户帐户信息用冒号分割了3个段,其中:

第一段 “user2020”:为原始输入的用户名

第二段 “8wsAAA==”:为salt(盐),一个32位随机整数的base64值

第三段 “ICbruj1yNoAtrODdBhFTSQ==”:为HASH值,算法为 md5(username + salt + password)

二、媒体服务器与推流端的认证过程

如果FMS被配置成启用推流认证,则推流端在推流时需要认证,认证过程是一个交互过程,可能有2-3次交互。经过笔者跟踪分析的步骤如下(一个正常认证的过程):

2.1 如果推流端在发起连接时没有携带认证信息,则FMS响应如下:

[ AccessManager.Reject ] : [ code=403 need auth; authmod=adobe ] : 

2.2 然后,如果推流端支持推流认证,则推流端回应如下:

rtmp://serverip/live?authmod=adobe&user=user2020

2.3 如果服务器端判断用户存在,则响应如下:

[ AccessManager.Reject ] : [ authmod=adobe ] : ?reason=needauth&user=user2020&salt=8wsAAA==&challenge=OzMAAA==&opaque=OzMAAA==

2.4推流端根据服务器响应,将密码信息回馈给服务器,回馈如下:

rtmp://serverip/live?authmod=adobe&user=user2020&challenge=KQAAAA==&response=2R7VMEl1wWPJWTom1Ca9hw==&opaque=5gUAAA==

至此,推流认证过程完成了。

如果推流认证失败,服务器端可能会回馈以下响应:

[ AccessManager.Reject ] : [ authmod=adobe ] : ?reason=nosuchuser&opaque=OTIAAA==
[ AccessManager.Reject ] : [ authmod=adobe ] : ?reason=authfailed&opaque=OzMAAA==

经过笔者测试,目前国内开发流媒体的服务器的厂家(包括几大云服务商)都没有支持Adobe推流认证,目前通过Flash Media Live Encoder 3.2 测试通过的的流媒体服务器只有 Adobe FMS、Wowza与 iAVCast Media Server。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值