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