SIP之GB28181注册、注销详解
GB28181定义了基于SIP架构的视频监控互联规范,而对于多数私有协议实现的监控如果想接入SIP架构,就要借助网关,GB28181规范了实现 SIP 监控域与非SIP 监控域互联。基本注册采用IETF RFC 3261规定的基于数字摘要的挑战应答式安全技术进行注册,具体注册流程:
注册流程说明:
a) 1:SIP 代理向SIP 服务器发送 Register 请求;
b) 2:SIP 服务器向 SIP 代理发送响应401, 并在响应的消息头 WWW_Authenticate 字段中给出
适合SIP 代理的认证体制和参数;
c) 3:SIP 代理重新向SIP 服务器发送 Register 请求, 在请求的 Authorization 字段给出信任书,
包含认证信息;
d) 4:SIP 服务器对请求进行验证, 如果检查出 SIP 代理身份合法, 向 SIP 代理发送成功响应
200 OK, 如果身份不合法则发送拒绝服务应答。
注:“SIP代理”这里指的UAC(User Agent Client) "SIP服务器"这里指的是UAS(User Agent Server)
当UAS接收到消息后,回送一个401消息“Unauthorized”在消息包头添加如下字段
WWW-Authenticate: Digest realm="3402000000",qop="auth",nonce="52d33cd23eea89a9563618cdf31d720a"
其中realm指的是域名(根据自己项目的实际情况填写),Nonces是随机数
具体过程
第一步 UAC -->UAS
UAC向UAS注册,下面是注册消息
REGISTER sip:34020000002000000001@36.103.240.124:5060 SIP/2.0
Via: SIP/2.0/UDP 10.10.0.10:7081;rport;branch=z9hG4bK460266740
From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216
To: <sip:34020000002000000001@10.10.0.10:7081>
Call-ID: 1688820428
CSeq: 1 REGISTER
Contact: <sip:34020000002000000001@10.10.0.10:7081>
Max-Forwards: 70
User-Agent:
Expires: 3600
Content-Length: 0
字段说明:
请求起始行:表示UAC向IP地址为36.103.240.124的服务器发起注册,SIP版本号为2.0
From字段:指明该REGISTER请求消息由UAS(IP地址:36.103.240.124)控制的UAC发起的。
To字段:指明REGISTER请求接收方的地址。此时REGISTER请求的接收方为IP地址为36.103.240.124的UAS。(这个值和To头域的值相同,除非这个请求是第三方发起的注册请求。)
Call-ID字段:UAC发出的给某个注册服务器(registrar)的所有注册请求都应该有相同的Call-ID头域值。如果相同的客户端用了不同的Call-ID值,注册服务器(registrar)就不能检测是否一个REGISTER请求由于延时的关系导致了故障。
Cseq字段:Cseq值保证了REGISTER请求的正确顺序。一个UA为每一个具备相同的Call-ID的REGISTER请求顺序递增这个Cseq字段。
Contact字段:在REGISTER请求中的Contact字段指明用户可达位置。
Expires字段:表示该登记生存期为3600s。
Content-Length字段:表明此请求消息消息体的长度为空,即此消息不带会话描述。
第二步 UAS -->UAC
UAS返回401 Unauthorized(无权限)响应。表明要求对UAC进行用户认证,并且通过WWW-Authenticate字段携带UAS支持的认证方式,产生本次认证的nonce
其中完整的401消息如下:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.10.0.10:7081;rport=13674;received=183.246.6.38;branch=z9hG4bK460266740
From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216
To: <sip:34020000002000000001@10.10.0.10:7081>;tag=104095562
CSeq: 1 REGISTER
Call-ID: 1688820428
User-Agent: LiveGBS
Contact: <sip:34020000002000000001@192.168.1.174:5060>
Content-Length: 0
WWW-Authenticate: Digest realm="3402000000",qop="auth",nonce="52d33cd23eea89a9563618cdf31d720a"
第三步 UAC -->UAS
UAC根据服务的要求提供“用户认证”,携带WWW-Authorization字段如下
REGISTER sip:34020000002000000001@36.103.240.124:5060 SIP/2.0
Via: SIP/2.0/UDP 10.10.0.10:7081;rport;branch=z9hG4bK1563079982
From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216
To: <sip:34020000002000000001@10.10.0.10:7081>
Call-ID: 1688820428
CSeq: 2 REGISTER
Contact: <sip:34020000002000000001@10.10.0.10:7081>
Authorization: Digest username="admin", realm="3402000000", nonce="7b20d1b1b55992de6c71aabfab4eec5d", uri="sip:34020000002000000001@36.103.240.124:5060", response="f447801943a6991ed97c612597362bfe", algorithm=MD5, cnonce="0a4f113b", qop=auth, nc=00000001
Max-Forwards: 70
User-Agent:
Expires: 3600
Content-Length: 0
算法验证如下:
HA1=MD5(username:realm:passwd) #username和realm在字段“Authorization”中可以找到,passwd这个是由客户端和服务器协商得到的,一般情况下UAC端存一个UAS也知道的密码就行了HA2=MD5(Method:Uri) #Method一般有INVITE, ACK, OPTIONS, BYE, CANCEL, REGISTER;Uri可以在字段“Authorization”找到response = MD5(HA1:nonce:HA2)
第四步 UAS-->UAC
UAS收到UAC的注册请求,首先检查NONCE的正确性,如果和在401 Unauthorized响应中产生的NONCE相同,则通过。否则,直接返回失败。然后,UAS会根据NONCE、用户名、密码(服务器端可以根据本地用户信息获取用户的密码)、URI等采用和终端相同的算法生成RESPONSE,并且对此RESPONSE和请求消息中的RESPONSE进行比较,如果二者一致则用户认证成功,否则认证失败。此时,UAS返回200 OK响应消息,表明终端认证成功。
UAS返回200 OK 消息,到此时UAC注册完成,UAC的REGISTER消息发送结束;
注销过程
注销过程流程图
图二 注销流程示意图
注销流程图描述如下:
a) 1:SIP 代理向SIP 服务器发送 Register 请求,Expires 字段的值为0, 表示SIP 代理要注销;
b) 2:SIP 服务器向 SIP 代理发送响应401, 并在响应的消息头 WWW_Authenticate 字段中给出
适合SIP 代理的认证体制和参数;
c) 3:SIP 代理重新向SIP 服务器发送 Register 请求, 在请求的 Authorization 字段给出信任书,
包含认证信息,Expires 字段的值为0;
d) 4:SIP 服务器对请求进行验证, 如果检查出 SIP 代理身份合法, 向 SIP 代理发送成功响应
200 OK, 如果身份不合法则发送拒绝服务应答。
SIP之GB28181注册、注销详解相关推荐
- 2016年最新苹果开发者账号注册流程详解(公司账号篇)
随着苹果规定金融/理财类应用需要使用公司开发者账号上传,并进一步加大对此类问题的审核力度,公司开发者账号开始呈现出炙手可热之势! 不过,公司开发者账号的注册流程着实复杂--不仅要填写公司的D-U-N- ...
- 2016 年最新苹果开发者账号注册流程详解(个人账号篇)
苹果宣布 Search Ads 重磅上线的同时,也向开发者传达了一个好消息:申请注册 Search Ads 即可获得 100 美元账户余额.虽然竞价广告目前仅限美国区,但此项福利却在中国区引发了一场规 ...
- 第二章 Roboguide安装及注册步骤详解
Roboguide安装及注册步骤详解 一.安装前需要了解的 1.软件获取途径 2.版本说明 3.系统软件及硬件需求 二.安装软件 1.安装前准备工作 2.软件安装步骤 3.注册软件 4.卸载软件 5. ...
- 黎明杀机手游注册登陆详解
黎明杀机手游注册登陆详解 1.OurPlay2.酷酷跑3.Qoo APP 1.打开Qoo APP 下载黎明杀机 2.打开酷酷跑,申请账号 2.1先点击一件安装再进行点击申请 3.打开OurPlay 将 ...
- PayPal注册申请详解
PayPal 是现在网络上最流行的免费信用卡,也是最流行的网上银行,作为ebay的旗下公司,PayPal成立于 1998 年,它使拥有电子邮件地址的任何个人或企业能够安全.便捷.迅速地在线收款和付款. ...
- Maltego注册问题详解
今天继续给大家介绍渗透测试相关知识,本文主要内容Maltego注册问题详解. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 一.Maltego ...
- lol澳洲服务器如何注册账号,云顶之弈手游澳服怎么进 LOL手游澳服账号注册流程详解[多图]...
云顶之弈手游澳服作为国内玩家比较多的服务器,不仅可以偶遇到国内好友还可以遇到国际友人哦,那么具体服务器进入方法就让安族66来告诉大家吧~ LOL手游澳服账号注册流程详解 [云顶之弈手游已经开放注册 如 ...
- Android客户端实现注册/登录详解(一)
前言 我们在开发安卓App时难免要与服务器打交道,尤其是对于用户账号信息的注册与登录更是每个android开发人员必须掌握的技能,本文将对客户端的注册/登录功能的实现进行分析,不到之处还请指出. 在这 ...
- 思科考试注册流程详解----VUE考点现场演示-晁海江-专题视频课程
思科考试注册流程详解----VUE考点现场演示-5201人已学习 课程介绍 更多课程,请百度搜索"晁海江". 备注:注册过程中,使用的姓名.电话.思科ID等,均是临 ...
- 2022苹果开发者账号注册流程详解(公司账号)
公司开发者账号注册流程详解: 一.注册公司账号前需要提供的信息: 1)邮箱,邮箱密码: 2)微信或支付宝或储蓄卡或者信用卡(原来是必须有需要带国际支付能力银行卡(visa银行卡,实际上是转账到国外的苹 ...
最新文章
- 持续集成Java覆盖率合并
- 学习之旅——工作记录日志2017.7.09
- 【TypeScript系列教程04】编译参数
- python @cached_property
- Vue学习笔记之11-slot插槽
- 压缩工具,神奇的RAID以及逻辑卷管理的PE,PA,LV,VG
- 一文了解Android游戏SDK开发
- 良心安利东方 rpg游戏制作大师素材网站
- 一文了解多肽修饰(环肽合成,多肽磷酸化标记,多肽蛋白偶联,甲基化及其它烷基化修饰,荧光修饰)定制合成技术介绍
- Python的优点和缺点
- 中国天气预报数据API收集
- TCL中变量嵌套使用
- 1259_STM32CubeProgrammer的简单使用
- 家居家装行业人群洞察白皮书.pdf
- 戴尔服务器显示器是什么接口,2012 年生产的 Dell Precision 工作站支持多少台显示器以及此类工作站上的显卡接口是什么样子?...
- 怎么关闭win7计算机一键还原系统,Win7卸载一键还原功能后还会保留在开机启动菜单中怎么办...
- idea创建python spark项目的步骤_Spark入门(二)--如何用Idea运行我们的Spark项目
- soliworks motion中测量角位移
- 【Go】三、函数与方法
- MTK的MT6582平台如何进u-boot amp;amp; 修改波特率为115200