直播推流拉流Token验证流程(直播服务器:SRS,验证服务器:EGGS(nodejs))
用Egg.js框架来写,SRS的HTTP Callback Token认证,
目标:推流和拉流观看时都进行Token验证,不合法的话就不能进行。同时还要配置SRS端,这可能涉及到SRS的配置文件和回调设置。
原理:
SRS的HTTP Callback机制:SRS在推流和拉流的时候会向配置的HTTP服务器发送请求,根据返回的状态码决定是否允许操作。比如,推流时,SRS会发送一个POST请求到指定的回调URL,如果返回HTTP 200,就允许,否则拒绝。所以,用户需要编写一个能够处理这两个回调的接口,并进行Token验证。
if (isValid) {
ctx.status = 200;
} else {
ctx.status = 403;
}
Egg.js部分:
需要创建一个Controller,处理两个路由:一个用于直播推流回调,一个用于拉流播放回调。这两个回调的处理逻辑可能类似,都是检查Token是否有效。
Token的生成和验证逻辑是关键。通常Token会包含过期时间、流名称、加密签名等信息。例如,用户可能生成一个类似md5(secret + stream + exp)的签名,然后将stream、exp、sign作为参数。验证的时候,服务端根据同样的算法重新计算签名,比较是否一致,并检查时间是否过期。
配置SRS的conf文件:
SRS的