当前位置: 首页 > Linux

开源服务lalserver支持多种认证和防盗链方法

时间:2023-04-07 03:27:33 Linux

lalserver是一款纯Golang开发的流媒体服务器。目前支持RTMP、RTSP(RTP/RTCP)、HLS、HTTP[S]/WebSocket[S]-FLV/TS协议。目前支持多种认证和防盗链方式。lalgithub地址:https://github.com/q191201771...▌方法一、定值认证参数首先修改配置文件如下:"conf_version":"v0.2.6",..."simple_auth":{"key":"q191201771",//私钥,计算鉴权参数时使用"dangerous_lal_secret":"pengrl",//后门鉴权参数,所有流都可以通过该参数值鉴权"pub_rtmp_enable":true,//rtmp推流是否开启鉴权,true表示开启鉴权,false表示不开启鉴权"sub_rtmp_enable":true,//rtmp拉流是否开启鉴权"sub_httpflv_enable":true,//httpflv拉流是否开启enableauthentication"sub_httpts_enable":true,//是否开启httpts流的鉴权"pub_rtsp_enable":true,//是否开启rtsp流的鉴权"sub_rtsp_enable":true,//是否开启rtsp流的鉴权"hls_m3u8_enable":true//m3u8流是否开启鉴权}...方法1和方法2的配置在配置项simple_auth下管理:pub和sub开头的字段决定是否对每个协议开启鉴权dangerous_lal_secretisauthentication参数的valuekey在下面的方法2中使用,这里的例子我不关心。未开启认证功能时,推流的url为rtmp://127.0.0.1:8080/live/test110。开启后,业务方推流url改为rtmp://127.0.0.1:8080/live/test110?lal_secret=pengrl其中lal_secret为认证签名参数,名称固定,值也固定,对应配置文件中dangerous_lal_secret的值。这种认证方式,所有流使用相同的认证参数值。▌方法二、MD5签名认证参数首先修改配置文件(见上面方法一中的说明):pub和sub开头的字段决定是否为每个协议启用认证密钥,用于MD5签名示例。未开启鉴权功能时,推流url为rtmp://127.0.0.1:8080/live/test110开启后,业务方推流url改为rtmp://127.0.0.1:8080/live/test110?lal_secret=700997e1595a06c9ffa60ebef79105b0其中lal_secret为鉴权签名参数,名称固定,值的计算公式为md5(配置文件中的simple_auth::key+流名).上面例子对应的计算方式是md5("q191201771test110")关于在Go、c++代码、命令行、web工具中如何计算MD5,参见:使用工具或代码生成MD5-任良注意事项在这种认证方式下,不同流名称对应不同的认证参数。注意方法一和方法二可以同时使用。lal_secret的值满足任何计算方式即可通过认证。▌方式三、自由定制与业务方服务交互的认证方式的大体逻辑是,当lalserver收到push或pull请求时,通过http回调的方式通知业务方服务。业务方的service根据自己的逻辑判断push或者pullrequest是否合法。如果不合法,使用lalserver提供的httpapi接口踢掉请求。相关文档:lalserverHTTPNotify事件回调lalserverHTTPAPI接口第三方文档https://help.aliyun.com/docum...https://cloud.tencent.com/doc...https://www.网宿.com/docume...