docs: archive split camera credentials (#50)
This commit is contained in:
@@ -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 镜像。
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user