验证状态:存在关键缺口,不可作为完整契约发布。Web 发布与应答消费已源码核验;采集服务器是
server/{采集服务器 deviceNo}/data/v1/decrypt的最终消费者,其源码不在本工作区,应答权威 schema、密码校验规则、错误码与防暴力破解行为缺证。 适用基线:源码归纳 @ 2026-09-14
回放设备页播放加密文件(文件行 crypto === 1)时,弹出密码对话框;用户提交密码后 Web 将 fileId + password 发往该文件所属采集服务器,成功应答携带 ip/port/playUrl 供播放器直接构造媒体 URL(见回放媒体地址)。data.playUrl 缺失即视为"解密失败",Web 不解析错误码。
| 页面/功能 | 角色或空间分支 |
|---|---|
| 加密视频播放器校验密码后取播放地址(对话框回车/按钮触发) | 登录用户;加密视频播放器 |
消费:data.playUrl 成功分支构造 URL;否则置 verifyError |
— |
对应 inventory operationId:mqtt-verifypassword-server-var-data-v1-decrypt-c658da9c。
MQTT 请求 server/{serverDeviceNo}/data/v1/decrypt(Web → Broker → 采集服务器直连,应答按 reply topic 回流;中心网关不消费)— 对加密文件校验密码并换取播放地址(ip/port/playUrl)。
通道口径:该 topic 不在中心消费/发布点清单内(网关默认订阅清单无 server/+/data/#,见MQTT 主题清单 · 服务端订阅面);应答回流、凭据与 QoS 等 wire 约定见MQTT 连接与消息边界。
请求形态 {id, reply, replyNumberMax:1, replyInterval:1, params:{fileId, password}};password 为用户输入明文、经 Broker 明文传输,reply topic 按 fileId 精确编址。
| 层级 | 判据 |
|---|---|
| 发布完成 | publishAsync Promise 成功;仅代表 Broker 受理 |
| 业务成功 | reply topic 应答 data.playUrl 非空 → 对话框关闭、播放 URL 生成 |
| 业务失败 | data.playUrl 缺失 → "Decryption failed" 文案,可重新输入 |
| 超时 | 无内置请求超时;无应答时 verifying 停留 true、按钮禁用,需手动取消 |
password 明文进入 MQTT payload,且 reply topic 按 fileId 精确编址——Broker 侧可见性与审计属部署安全核验项;传输层加密依赖站点 wss 接入(MQTT 连接正本)。verifying 卡住,仅能取消对话框重试。id/crypto/deviceNo;crypto === 1 才进入本流程。ip/port/playUrl 交给回放媒体地址构造 URL。data 权威 schema、错误码全集、防暴力破解与会话时效均缺证。