在此文档的第6章介绍了onvif鉴权使用的
使用WS-UsernameToken进行设备鉴权:
适用于已经注册到设备的采用WS-UsernameToken方式鉴权的设备
设备采用WS-UsernameToken鉴权的时候,client必须设置好采用WS-UsernameToken鉴权方式的用户的权限。
使用WS-UsernameToken方式鉴权需要以下参数:
username:待认证的用户名Nonce:client随机产生的独一无二的数字
Created:请求建立的UTC时间
passwd:待认证的用户的密码,依据onvif的要求密码不能是纯文本,而是依据密码等相关参数产生一个digest
Digest = B64Encode( SHA1( B64DECODE(Nonce)+Date+Passwd )
流程:client采用 WS-UsernameToken鉴权的方式为users设置权限,并且发送采用WS-UsernameToken鉴权的SetHostname的命令
验证WS-UsernameToken
设备需要进行基于WS-UsernameToken鉴权方式的鉴权的时候,client和server必须时间同步。通常设备默认会接受一些匿名的访问。在用户需要其他权限的时候必须进行鉴权。
onvif core规范声明:在未声明用户的情况下,应该拥有最高权限。一旦用户建立,认证策略便需要引入。下面的例子解释了如何保证设备之间的认证。如果用户不存在的话需要在设备上先创建用户然后在进行验证鉴权。
另外在出厂设置模式下其认证没有使能是不需要进行鉴权的
onvif初始化设备认证流程:
1.client通过GetSystemDateAndTinme获取时间
2.client与device进行时间比较,如果需要的话进行时间同步。如果client与device之间的时间相差太大,则devie可能会拒绝WS_UsenameToken,此时可以使用NTP或者setSystemDateAndTime来进行时间同步
3.client检查看device是否有注册的用户,如果没有用户则新建一个用户并认证。
用户管理:
创建用户:
创建用户需要提供3个参数:
1.name :
2,password
3.userlevel:用于设置用户权限
客户端通过使用CreateUsers去创建用户并设置这些参数
修改密码:
使用setuser去修改已经注册的用户的信息。下面介绍如何修改密码
可以更新用户的三个参数去修改用户信息。
1.name :修改用户名
2,password:修改密码
3.userlevel:修改用户权限
删除用户:
使用DeleteUsers去删除已经在设备上注册的用户。待删除的用户的name将DeleteUsers中被设置
需要特别注意的是每个设备在删除管理员用户或者操作员用户的时候的表现是不同的
处理TLS认证:
无论是自签名证书还是签名证书(CA),都可通过TLS传输。下面介绍了使用这种认证的基本框图。