BodyBalanceEvaluation/backend/LICENSE_README.md

198 lines
4.6 KiB
Markdown
Raw Normal View History

# 软件授权控制系统使用说明
## 概述
本系统实现了基于数字签名的软件授权控制功能,支持离线授权验证和多种授权类型。
## 文件结构
```
backend/
├── devices/utils/license_manager.py # 授权管理核心模块
├── tools/license_generator.py # 授权文件生成工具
├── license_public_key.pem # 授权验证公钥
├── sample_license.json # 示例授权文件
├── dev_license.json # 开发测试授权文件
├── config.ini # 配置文件(包含[LICENSE]节)
└── LICENSE_README.md # 本说明文档
```
## 配置说明
### 1. 配置文件设置
`config.ini` 中的 `[LICENSE]` 节配置授权相关参数:
```ini
[LICENSE]
# 授权文件路径
path = dev_license.json
# 公钥文件路径
public_key = license_public_key.pem
# 授权过期宽限期(天)
grace_days = 7
# 开发模式(跳过授权检查)
dev_mode = True
```
### 2. 开发模式
- 设置 `dev_mode = True` 可跳过授权检查,便于开发调试
- 生产环境必须设置 `dev_mode = False`
## 授权类型
### 1. 试用版 (trial)
- 功能限制录制时长30分钟最多10个会话
- 适用于产品试用
### 2. 标准版 (standard)
- 功能:完整录制和导出功能
- 限制最多1000个会话10个用户
- 适用于中小型机构
### 3. 专业版 (professional)
- 功能:所有功能无限制使用
- 包含高级分析功能
- 适用于大型机构
## 使用流程
### 1. 生成密钥对(首次部署)
```bash
cd backend
python tools/license_generator.py --generate-keys --private-key private_key.pem --public-key license_public_key.pem
```
### 2. 生成授权文件
```bash
# 生成标准版授权
python tools/license_generator.py \
--private-key private_key.pem \
--license-id "STANDARD-2025-001" \
--license-type standard \
--company-name "天宏博科技" \
--contact-info "contact@example.com" \
--expires-days 365 \
--output customer_license.json
# 生成试用版授权
python tools/license_generator.py \
--private-key private_key.pem \
--license-id "TRIAL-2024-001" \
--license-type trial \
--company-name "试用客户" \
--expires-days 30 \
--output trial_license.json
```
### 3. 部署授权文件
1. 将生成的授权文件复制到客户端
2. 更新 `config.ini` 中的 `path` 参数指向授权文件
3. 确保 `dev_mode = False`
4. 重启应用
## API接口
### 1. 获取授权信息
```http
GET /api/license/info
```
响应示例:
```json
{
"success": true,
"data": {
"valid": true,
"message": "授权有效",
"license_type": "standard",
"license_id": "STANDARD-2024-001",
"expires_at": "2025-12-31T23:59:59Z",
"features": {
"recording": true,
"export": true,
"max_sessions": 1000
},
"machine_id": "ABC123..."
}
}
```
### 2. 生成激活请求
```http
POST /api/license/activation-request
Content-Type: application/json
{
"company_name": "客户公司",
"contact_info": "contact@customer.com"
}
```
### 3. 验证授权文件
```http
POST /api/license/verify
Content-Type: multipart/form-data
license_file: [授权文件]
```
## 受保护的API
以下API需要有效授权才能访问
- `POST /api/detection/start` - 需要 `recording` 功能
- `POST /api/detection/{session_id}/stop` - 需要 `recording` 功能
- `GET /api/detection/data/*` - 需要基础授权
- `DELETE /api/detection/data/*` - 需要基础授权
## 安全注意事项
### 1. 私钥保护
- 私钥文件必须妥善保管,不得泄露
- 建议使用硬件安全模块(HSM)存储私钥
- 定期轮换密钥对
### 2. 授权文件保护
- 授权文件包含数字签名,不可篡改
- 建议通过安全渠道分发授权文件
- 客户端应定期验证授权有效性
### 3. 机器绑定
- 可通过 `machine_id` 参数绑定特定机器
- 使用 `*` 表示不限制机器
- 机器指纹基于硬件信息生成
## 故障排除
### 1. 授权验证失败
- 检查授权文件格式是否正确
- 确认公钥文件路径配置正确
- 验证授权文件签名是否有效
### 2. 功能受限
- 检查授权类型和功能权限
- 确认授权是否过期
- 验证机器ID是否匹配
### 3. 开发调试
- 临时启用 `dev_mode = True`
- 查看日志文件获取详细错误信息
- 使用 `dev_license.json` 进行测试
## 技术支持
如遇到授权相关问题,请提供以下信息:
1. 错误日志
2. 授权文件内容(去除签名)
3. 机器硬件指纹
4. 配置文件相关部分
联系方式:[技术支持邮箱]