开源服务lalserver支持多种鉴权防盗链方式
lalserver是纯Golang开发的流媒体服务器。目前已支持RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket[S]-FLV/TS协议。▌ 方式一. 固定值的鉴权参数
目前已支持多种鉴权防盗链的方式。
lal github地址: https://github.com/q191201771...
首先,修改配置文件,如下:
"conf_version": "v0.2.6",
...
"simple_auth": {
"key": "q191201771",// 私有key,计算鉴权参数时使用
"dangerous_lal_secret": "pengrl", // 后门鉴权参数,所有的流可通过该参数值鉴权
"pub_rtmp_enable": true,// rtmp推流是否开启鉴权,true为开启鉴权,false为不开启鉴权
"sub_rtmp_enable": true,// rtmp拉流是否开启鉴权
"sub_httpflv_enable": true,// httpflv拉流是否开启鉴权
"sub_httpts_enable": true,// httpts拉流是否开启鉴权
"pub_rtsp_enable": true,// rtsp推流是否开启鉴权
"sub_rtsp_enable": true,// rtsp拉流是否开启鉴权
"hls_m3u8_enable": true// m3u8拉流是否开启鉴权
}
...
方式一和方式二的配置都在配置项
simple_auth
下管理:pub
和sub
开头的字段决定了各协议是否开启鉴权dangerous_lal_secret
为鉴权参数的值key
在下面方式二中使用,这里暂时不关心
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
等开头的字段决定了各协议是否开启鉴权key
用来做MD5签名
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++代码以及命令行、网页工具如何计算MD5见:使用工具或代码生成MD5 - 仁亮笔记
【开源服务lalserver支持多种鉴权防盗链方式】该鉴权模式下,不同的流名称对应不同的鉴权参数。
注意,方式一和方式二可同时使用。
lal_secret
的值满足任意一种计算方式即可鉴权通过。▌ 方式三. 与业务方服务交互,自由定制鉴权方式
大体的逻辑是,lalserver在接收到推流或者拉流请求时,使用http回调的方式通知业务方的服务。
业务方的服务根据自身的逻辑,判定这个推流或者拉流请求是否合法。
如果不合法,使用lalserver提供的http api接口将该请求踢掉。
相关文档:
- lalserver HTTP Notify事件回调
- lalserver HTTP API接口
- https://help.aliyun.com/docum...
- https://cloud.tencent.com/doc...
- https://www.wangsu.com/docume...
推荐阅读
- 安卓开源框架学习|OKHttp原理讲解之RetryAndFollowUpInterceptor
- 酷瓜云课堂(腾讯云)开源版 v1.5.1 发布
- 华为音频编辑服务,实时分离人声、伴奏和乐器声
- 阿里云数据库开源重磅发布(PolarDB三节点高可用的功能特性和关键技术)
- 服务端框架重构心路历程
- nacos 服务状态监听
- 学习感悟篇|我的开源项目从0到1024的过程
- 云链合一,我的开源之路
- 美国法院最新判决(未经 OSI 许可的开源是「假开源」!)
- 总结了一下程序员们都应该知道的各类开源许可证及合规相关的知识