onvif 客服端鉴权

                        Onvif  Windows下客服端鉴权

 

终于把鉴权问题搞定了,上上下下不少于一周时间。趁着这份喜悦,好好的总结一下,给自己留下点东西以后来看,同时也希望对后面的开发者有用。同时也谢谢不少网友的帮助。

 步骤:

 1:生成onvfi.h。

 2:修改 onvif.h onvif.h中添加头文件 #include “wsse.h”

 3:soapcpp2.exe 生成开发的代码框架。前面几部网上资料比较多。

   鉴权部分用到的所有的文件

    gsoap/dom.c
     gsoap/stdsoap2.c
     gsoap/stdsoap2.h
     gsoap/custom/duration.c
     gsoap/plugin/mecevp.c
     gsoap/plugin/mecevp.h
     gsoap/plugin/smdevp.c
     gsoap/plugin/smdevp.h
     gsoap/plugin/threads.c
     gsoap/plugin/threads.h
     gsoap/plugin/wsaapi.c
     gsoap/plugin/wsaapi.h
     gsoap/plugin/wsseapi.c
     gsoap/plugin/wsseapi.h

所有的文件列表如下。

 onvif 客服端鉴权_第1张图片

 

 

鉴权部分

主要用到的函数

      soap_wsse_add_UsernameTokenDigest(soap,NULL,"admin","12345");

  如果就这样编译通不过会出现以下类似的错误。

 onvif 客服端鉴权_第2张图片

 

出现上面的问题,我第一印象是少了什么头文件,然后就尝试着去添加各种头文件,过程中是少一点错误,但是增加了跟多的错误。

无奈只得在网上找资料,随便看看,问朋友。

 编译wsseapi.c时需要需要openssl的支持,并且编译以上所有文件时,增加两个

CFLAGS+=-DWITH-DOM -DWITH-OPENSSL

   当时不明白怎么搞,就问了下朋友。下面是一个热心网友的回答。

鉴权加入:在生成代码骨架之前确认一下,终端设备是否需要安全认证,如果需要安全认证,那么需要在onvif.h里添加

#import "wsse.h"

添加位置大约在onvif.h 98 行处,放在其他#import 的后面即可。

在“项目属性”—》“配置属性”—》“C/C++”—》“预处理器”—》“预处理定义”添加“WITH_DOM”和“WITH_OPENSSL”。

 Linux 下 gcc wsseapi.c -DWITH-DOM -DWITH-OPENSSL。

感谢热心朋友的帮助。

最后编译通过。

 然后抓包分析。

 onvif 客服端鉴权_第3张图片

鉴权成功。

到此为止。

                                                                                                                                                                                                                                                   小熊

  

   

 

你可能感兴趣的:(onvif 客服端鉴权)