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, 如果身份不合法则发送拒绝服务应答。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值