Files
yovision/docs/task/50-ONVIF与RTSP分离凭据并持久化Profile.md
T

3.5 KiB
Raw Blame History

generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Task-50-ONVIF与RTSP分离凭据并持久化Profile wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-50-ONVIF%E4%B8%8ERTSP%E5%88%86%E7%A6%BB%E5%87%AD%E6%8D%AE%E5%B9%B6%E6%8C%81%E4%B9%85%E5%8C%96Profile.- wiki_revision: 27ac0fe8ef97f9ec835fa62713f3a8c23c077940 synchronized_at: 2026-08-13T04:18:00Z

50 ONVIF与RTSP分离凭据并持久化Profile

  • 类型:功能
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 状态:待验收
  • 日期:2026-08-13
  • Gitea 工单:#50
  • Wiki 页面:Task-50-ONVIF与RTSP分离凭据并持久化Profile
  • Wiki revision:见本地镜像头

背景与目标

真实摄像机的 ONVIF 与 RTSP 使用不同账号,旧版 Sense 每台设备只有一组凭据;接入结果还只保存在内存中。目标是分别安全保存两组凭据、持久化脱敏 Profile,并让接入成功的设备进入 active。

最终方案

  • Device 新增独立 RTSP 密文与“复用 ONVIF”标志,旧凭据通过版本化迁移安全回填;API 只返回配置状态。
  • 设备页面同时维护 ONVIF/RTSP 凭据,默认允许显式复用;审计只记录是否复用,不记录值。
  • Admission 使用 ONVIF 凭据读取 Profile、RTSP 凭据验证视频;结果与脱敏 Stream URI、主/子码流、验证状态写入 PostgreSQL。
  • 摄像机广播跨主机 RTSP URI 时,只把主机归一化到用户授权的 Device Service 主机,保留报告端口与路径。
  • 至少一个 Profile 验证成功后 Device 进入 active;接入页切换设备时读取持久化结果。
  • 真实设备使用分离凭据后 2 个 Profile 均 ready,重启 Sense 后仍可读取。

修改文件

  • Sense/server/app/sense/device/**:分离凭据模型、迁移、加密读写与内部端口。
  • Sense/server/app/sense/admission/**:Profile Store、迁移、持久化和设备状态更新。
  • Sense/server/app/sense/adapters/onvif/**:安全归一化跨主机 RTSP URI。
  • Sense/server/cmd/sense/modules_device.go、modules_admission.go:注册版本化迁移与 PostgreSQL Store。
  • Sense/ui/src/views/sense/device/Devices.vue、admission/Admission.vue:分离凭据表单与持久结果恢复。
  • Wiki 架构、业务规则和排错页面:记录新安全边界。

验收结果

验收标准 结果
两组凭据分别加密且只写不可读 通过
同凭据复用与分离凭据均受支持 通过
Profile 重启后存在 通过,2 个 Profile
至少一个 Profile ready 后设备 active 通过
真实摄像机 ONVIF 与 RTSP 验证 通过,2/2 ready
不泄露地址、密码、Authorization 或 Stream URI 通过

测试

  • go test ./...:通过。
  • pnpm lint:0 error,存在基线格式 warning。
  • pnpm build:通过,存在既有 webpack 体积 warning。
  • Go 1.26.5 Windows 打包:通过。
  • 真实设备脱敏验证:admission_status=ready、profile_count=2、ready_profile_count=2、device_status=active。
  • 重启验证:persisted_status=ready、persisted_profile_count=2。
  • 未验证部分:MediaMTX 自动路由与实时监看属于后续工单 #51。

遗留问题

  • 无本工单范围内遗留;自动媒体路由在 #51 实施。
  • 严格 Harness 仍受既有 #44 归档缺少“最终方案”章节影响。

相关提交

  • 1a63264 分离凭据、持久化 Profile 和真实地址归一化。
  • 032f8c5 更新长期 Wiki 镜像。