在使用 ONVIF Device Manager(ODM) 登录海康摄像头时,我遇到了一个非常令人困扰的问题:
The action requested requires authorization and the sender is not authorized
这条错误是 ONVIF 协议返回的标准 401 错误,意思是:你请求的接口需要身份验证,但发送方没有通过授权认证。但奇怪的是,我明明使用的是 admin 账号,密码也完全正确,却始终无法通过 ODM 登录成功。
结合官方文档与社区经验,网上给出的几种常见解释包括:
1.账号或密码错误:
尽管 admin 账号正确,有时也会由于权限配置等问题而无法登录。
2.admin 账号被系统限制 ONVIF 权限:
有些海康固件或 OEM 型号摄像头中,admin 默认账号并未被授权访问 Media 或 PTZ 接口,导致即使密码正确也无法认证通过。
3.摄像头 ONVIF 服务未开启或绑定端口错误:
ONVIF 协议必须在设备中显式开启,并配置正确的用户绑定与认证方式(Digest / WS-UsernameToken)。
检查后,我发现没有出现上面的情况!
于是一直捣鼓海康的网页,偶然发现摄像头系统时间是1994年??
这下发现,真正的核心问题其实是:设备时间不一致,导致 WSSE Token 验证失败。
ONVIF 协议中使用 WS-Security 时,客户端发送的认证请求中会携带一个时间戳(Created 字段)。
很多海康设备的 ONVIF 服务默认启用了时间验证,如果摄像头系统时间与本地系统时间相差超过 5 秒左右,就会判定认证请求已过期或非法。
解决办法:
进入摄像头后台管理界面:
系统配置 → 时间配置 → 启用 NTP 校时
勾选 NTP 自动同步,确保摄像头时间与主机或公网时间保持一致。启用后,WSSE 时间戳即可被正常接受,认证也能成功通过。