docs: archive split camera credentials (#50)

This commit is contained in:
QiuSW
2026-08-13 12:23:26 +08:00
parent 032f8c5602
commit 73d775b199
2 changed files with 75 additions and 0 deletions
@@ -0,0 +1,71 @@
<!-- gitea-wiki-mirror:start -->
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
<!-- gitea-wiki-mirror:end -->
# 50 ONVIF与RTSP分离凭据并持久化Profile
- 类型:功能
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-13
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/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 镜像。
+4
View File
@@ -135,6 +135,10 @@
{
"page": "Task-48-支持ONVIF-Digest认证与安全Media地址归一化",
"path": "docs/task/48-支持ONVIF-Digest认证与安全Media地址归一化.md"
},
{
"page": "Task-50-ONVIF与RTSP分离凭据并持久化Profile",
"path": "docs/task/50-ONVIF与RTSP分离凭据并持久化Profile.md"
}
]
}