BodyBalanceEvaluation/backend/LICENSE_README.md

198 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 软件授权控制系统使用说明
## 概述
本系统实现了基于数字签名的软件授权控制功能,支持离线授权验证和多种授权类型。
## 文件结构
```
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. 配置文件相关部分
联系方式:[技术支持邮箱]