本文共 1357 字,大约阅读时间需要 4 分钟。
GB28181中,下级需要向上级进行登录注册,才能开启上下级之间的连接。注册的流程,详见GB28181文档的9.1小节。
在注册过程中,上级有可能(为什么是“有可能”,后面会说)需要对下级进行鉴权校验。鉴权使用的是HTTP的数字摘要鉴权方法。
它的流程是这样的:
(1)首先上下级之间需要协商好下级所使用的国标id号,以及注册鉴权的密码。
id号和密码,一般是由上级填写,并告知给下级。
(2)接下来就是鉴权计算了。所使用的公式是这样的:
HA1=md5(username:realm:password)
HA2=md5(Method:Uri)
RESPONSE=md5(HA1:nonce:HA2)
(3)计算出RESPONSE后,由下级在第二次REGISTER中携带,并由上级依据同样的步骤和方法独立计算得到RESPONSE2。比较RESPONSE和RESPONSE2,两者相等则鉴权成功,否则失败。
其中会涉及到如下几个关键词:
username:即国标id号
realm:通常是id的前10位(参考文档6.1小节)。由上级的401消息携带告知下级。
password:提前配置商定。
Method:REGISTER
Uri:由下级在第二次REGISTER中携带。
nonce:由上级的401消息携带告知下级。
举个例子说明一下:
HA1=md5(username:realm:password)
HA1=md5(11000000003000000001:1100000000:123456) =81f021fe3f4876df315d89c82a24cdff 用小写的 81F021FE3F4876DF315D89C82A24CDFFHA2=md5(Method:Uri)
HA2=md5(REGISTER:sip:11000000002000000001@192.168.0.112:5060;transport=UDP) =160aad37c1bf7fe16ae9cb656ebbf4e4 用小写的 160AAD37C1BF7FE16AE9CB656EBBF4E4nonce=13150012922:c44236aa4b0085fd6c5161d73c8e29b3
RESPONSE=md5(HA1:nonce:HA2) RESPONSE=md5(81f021fe3f4876df315d89c82a24cdff:13150012922:c44236aa4b0085fd6c5161d73c8e29b3:160aad37c1bf7fe16ae9cb656ebbf4e4) =97d60ab7abb7c59d288223600b9eddfd前面提到,上级有可能需要对下级进行鉴权校验。之所以是有可能,是因为也可以不必对下级进行鉴权校验。无鉴权的注册流程,有两种实现方法。
(方法一)相比于GB28181文档的9.1小节的带鉴权的注册流程,少了步骤2和步骤3。即:下级发送REGISTER方法给上级,上级直接返回200 OK。
(方法二)相比于GB28181文档的9.1小节的带鉴权的注册流程,步骤没有改变,只是在步骤3,不论下级发送上来的RESPONSE消息是什么,上级都会返回200 OK。
转载地址:http://cymzb.baihongyu.com/