# 安全与鉴权方案

基于 `软件系统说明.docx` 整理。本文档用于把当前已知安全要求整理成可继续细化的设计骨架。

本文档不虚构签名算法、密钥管理方案或合规要求，只固定已知要求和必须补齐的实现细节。

## 已确认事实

- 全链路传输使用 `TLS 1.2+`
- 设备认证依赖 `DeviceSecret`
- 用户认证为微信登录 + Token
- Token 有效期为 7 天
- 敏感数据需要加密存储
- 需要 API 鉴权
- 需要角色权限控制
- 需要 API 级别鉴权

## 安全边界拆分

当前系统至少存在四类安全边界：

- 小程序用户身份安全
- 设备身份安全
- 云端 API 访问安全
- 后台管理权限安全

## 用户鉴权待补项

至少需要明确：

- 微信登录到自有 token 的完整链路
- Token 格式
- Token 签名算法
- Token 7 天有效期是否支持续期
- Token 失效、登出、吊销机制
- 多端并发登录规则

## 设备鉴权待补项

至少需要明确：

- `DeviceSecret` 的签发时机
- `DeviceSecret` 的保存位置
- `DeviceSecret` 是否可轮换
- 设备被盗用或泄露后的失效机制
- 设备认证失败后的告警与禁用策略

## API 安全待补项

至少需要明确：

- API 鉴权中间件规则
- 接口级权限定义
- 限流策略
- 防重放策略
- 防刷策略
- 请求日志中需要记录的审计字段

## 数据安全待补项

至少需要明确：

- 哪些字段属于敏感数据
- 加密字段范围
- 加密方式
- 脱敏展示规则
- 数据保留周期
- 备份与恢复的安全要求

## 后台权限安全待补项

至少需要明确：

- 管理员认证方式
- 角色权限模型
- 高风险操作的二次确认规则
- 操作日志保留策略
- 是否需要登录告警和异常操作审计

## 建议最先统一的安全对象

为了后续设计不混乱，建议先统一这些对象的定义：

- 用户身份
- 设备身份
- 管理员身份
- 访问 token
- 设备密钥
- 角色
- 权限

## 建议补充的安全设计模板

后续可按以下模板逐项补齐：

| 主题 | 已知要求 | 待确认实现 | 风险 |
| --- | --- | --- | --- |
| 用户登录 | 微信登录 + Token | 待定义 | 待评估 |
| 设备认证 | `DeviceSecret` | 待定义 | 待评估 |
| API 鉴权 | API 级别鉴权 | 待定义 | 待评估 |
| 数据加密 | 敏感数据加密存储 | 待定义 | 待评估 |

## 待确认问题

- 小程序 token 是否只用于云端 API，还是也影响设备绑定授权
- 后台是否与小程序共用用户体系
- 是否需要设备侧应用层签名或加密，而不仅是 TLS
- 是否有合规或审计的特殊要求

## 当前结论

当前说明已经明确安全目标，但没有给出实现方案。最先要补的是 token 生命周期、`DeviceSecret` 生命周期、权限模型和敏感数据定义。
