</pre><p>ONVIF 用户校验实现</p><p><span style="white-space:pre"> </span>ONVIF 开发使用C/C++的话,使用 gsoap 这个工具是好用的。直接生成代码框架。以下是使用 gSOAP 自己修改框架完成用户认证的方法,</p><p><ol><li>gSOAP 生成的代码框架,在stdsoap2.c 文件的 struct SOAP_STD_API soap { ... } 结构体里面添加一个结构体 struct WS_UsernameToken SUsernameToken; 用来保存每条指令传过来的用户名,密码校验等信息。</li></ol></p><p></p><pre name="code" class="cpp">#define AUTHENTICATION_NAME_LEN 64
struct WS_UsernameToken
{
char m_acSoapUsername[AUTHENTICATION_NAME_LEN];
char m_acSoapPassword[AUTHENTICATION_NAME_LEN];
char m_acSoapPasswordType[AUTHENTICATION_NAME_LEN*2];
char m_acSoapNonce[AUTHENTICATION_NAME_LEN];
char m_acSoapCreated[AUTHENTICATION_NAME_LEN];
};
因为gSOAP生成的代码框架,每条请求都携带一个 struct soap * 指针,所以把结构体存在这个 结构很合理。回调函数指针也应该存储在这个结构体。

本文介绍了如何在ONVIF协议中利用gSOAP生成的代码框架,通过自定义soap结构体来实现用户认证。在`soapC.c`文件的`soap_in_SOAP_ENV__Header()`函数中获取客户端的用户名和密码,并利用`soap_in_PointerTo_Authentication()`函数解析SOAP头域。此外,还提到了使用SHA1和base64算法的相关细节,以完成用户认证的回调函数实现。
最低0.47元/天 解锁文章
1453

被折叠的 条评论
为什么被折叠?



