Onvif协议接入分析学习总结(鉴权认证)

Onvif支持两种鉴权方式,一种是WS-Security UsernameToken(常用,需要理解并实现),另外是Digest(RTSP取流也会用到的鉴权方式,如果只是做客户端的方向的话,可以尝试了解)。

绝大部分的数据请求都是需要用户权限的,所以鉴权是非常重要的基础部分内容。

一般基础的鉴权信息都是用户名加密码,Onvif是支持明文直接传输,但是不太建议使用,且目前市面上的IPC也不太支持明文传输。

一、WS-Security UsernameToken


 

   

      root

      EVpXS/7yc/vDo+ZyIg+cc0fWdMA=

      tKUH8ab3Rokm4t6IAlgcdg9yaEw=

      2010-08-10T10:52:42Z

   

 

 

   


上面是一个简单的例子,可以看在Header里面UsernameToken节点。里面含有4个关键的信息

1、Username:用户名信息。

2、Password:加密后的密码数据,用来给服务端校验。

3、Nonce:一个随机的数据,base64编码。

4、Created:日前信息,用来加密Password数据。

公式如下:

Password = Base64Encode(SHA1(Base64Decode(Nonce) + Created + password))

如上面的例子中:Username为root,假设真实密码为123456,代入上面的公式就是

"EVpXS/7yc/vDo+ZyIg+cc0fWdMA=" =  Base64Encode(SHA1(Base64Decode("tKUH8ab3Rokm4t6IAlgcdg9yaEw=") + "2010-08-10T10:52:42Z " + "123456"))

关于Nonce的生成规则只要保证随机性即可,最好能保证每次的Nonce为唯一,可以以当前的毫秒数+随机数为Nonce的源数据进行base64编码。因为有的厂家会对Nonce进行次数的有效性验证,即相同的Nonce的验证次数有限,在多并发的场景下,很容易会忽略导致验证失败。

二、Digest摘要认证

暂时不介绍,资料可以参考百度其他协议。

你可能感兴趣的:(Onvif协议接入分析学习总结(鉴权认证))