BodyBalanceEvaluation/backend/LICENSE_README.md

4.6 KiB
Raw Blame 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] 节配置授权相关参数:

[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. 生成密钥对(首次部署)

cd backend
python tools/license_generator.py --generate-keys --private-key private_key.pem --public-key license_public_key.pem

2. 生成授权文件

# 生成标准版授权
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. 获取授权信息

GET /api/license/info

响应示例:

{
  "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. 生成激活请求

POST /api/license/activation-request
Content-Type: application/json

{
  "company_name": "客户公司",
  "contact_info": "contact@customer.com"
}

3. 验证授权文件

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. 配置文件相关部分

联系方式:[技术支持邮箱]