Files
license-manager/docs/需求说明书.md
T
2025-07-29 23:19:51 +08:00

4.8 KiB
Raw Blame History

软件授权管理平台需求规格说明书

1. 项目概述

1.1 项目背景

为了保护软件知识产权,规范软件使用权限,需要开发一个独立的软件授权管理平台,为IoT平台等软件系统提供授权码生成、分发、验证和管理服务。

1.2 项目目标

  • 建立统一的软件授权管理系统
  • 实现基于硬件绑定的授权机制
  • 提供在线和离线两种授权模式
  • 支持授权状态实时监控和管理
  • 提供完整的客户管理功能

1.3 系统定位

本系统作为独立的授权管理平台,通过Web管理界面和RESTful API为其他软件系统提供授权服务。

2. 系统功能需求

2.1 客户管理模块

  • 支持客户基本信息的增删改查(姓名、公司、联系人、邮箱、电话、地址、状态、描述)
  • 支持客户状态管理(激活/停用)
  • 提供客户列表查看、详情查看和JSON API接口

2.2 授权生成模块

2.2.1 授权类型支持

  • 在线授权码模式:生成授权码,客户端激活时绑定硬件信息
  • 离线许可证模式:直接生成绑定硬件信息的软件许可证

2.2.2 授权生成功能

  • 支持为指定客户生成授权码或软件许可证
  • 硬件指纹基于机器序列号、MAC地址、CPU ID生成
  • 支持自定义有效期(1-36500天,预设选项:30天、90天、365天、永久)
  • 支持功能列表配置和部署模式选择(在线/离线)
  • 使用HMAC-SHA256签名和Base64编码保证安全性
  • 可扩展额外功能,软件系统可以从生成的license里解析出来,比如{"device_number":20}

2.3 授权管理模块

  • 显示所有授权记录列表,支持按客户筛选
  • 授权状态监控(激活、过期、吊销),支持手动吊销和删除
  • 提供授权详细信息查看(客户信息、硬件信息、过期时间、最后心跳时间)
  • 实时显示授权过期和激活状态

2.4 部署包生成模块

  • 为每个授权自动生成ZIP格式部署包
  • 包含配置文件(config.yaml)、安装脚本(install.sh)、部署文档等
  • 根据客户和授权信息自动命名

2.5 在线验证模块

  • 授权验证API:验证授权码和软件许可证,支持硬件指纹验证
  • 授权激活API:支持授权码激活为软件许可证,防止重复激活
  • 心跳监控API:记录客户端活跃时间,提供在线状态统计
  • 授权信息查询API:返回脱敏的授权信息,支持状态和过期检查

2.6 系统管理模块

  • 用户认证:管理员登录、状态保持、安全退出
  • 权限控制:Web界面需要认证,API接口独立于管理界面
  • 系统监控:运行状态仪表盘、授权统计信息、资源监控

2.7 工具支持模块

  • 提供Windows和Linux平台的硬件信息获取工具
  • 支持获取机器序列号、MAC地址、CPU ID
  • 提供工具下载接口

3. 系统非功能性需求

3.1 性能需求

  • 支持并发用户数不少于100个
  • API响应时间不超过2秒
  • 数据库连接池管理和查询性能优化

3.2 安全需求

  • 授权码和软件许可证使用HMAC-SHA256签名
  • 硬件指纹绑定防止盗用
  • 敏感信息保护和HTTPS传输加密

3.3 可靠性需求

  • 系统可用性达到99.9%
  • 数据备份恢复、异常优雅降级
  • 完善的错误处理和日志记录

3.4 可扩展性需求

  • 支持水平扩展和模块化设计
  • 支持多种数据库(当前使用PostgreSQL)
  • RESTful API设计便于集成

3.5 兼容性需求

  • 支持Windows、Linux、macOS操作系统
  • 支持主流浏览器和跨平台客户端工具

4. 系统架构需求

4.1 技术架构

  • 架构模式:B/S架构
  • 后端技术:Go 1.23+,Gorilla Mux路由,Logrus日志
  • 数据库:PostgreSQL 12+,mysql12+
  • 前端:x
  • 配置:YAML格式配置文件

4.2 部署要求

  • 支持单机部署、Docker容器化部署
  • 支持系统服务形式运行
  • 提供启动脚本和配置模板

5. 数据需求

5.1 数据模型

  • 客户数据表:基本信息、状态、创建时间,支持软删除和审计
  • 授权数据表:授权码/许可证信息、客户关联、硬件信息、状态时间、功能列表

5.2 数据管理

  • 支持定期数据备份和导入导出功能
  • 提供数据迁移工具

6. 接口需求

6.1 Web管理界面

  • 客户管理、授权生成、授权列表和详情页面
  • 系统仪表盘、用户登录页面

6.2 RESTful API接口

  • POST /api/validate - 授权验证
  • POST /api/activate - 授权激活
  • POST /api/heartbeat - 心跳上报
  • GET /api/license/{code} - 授权信息查询
  • GET /api/customers - 客户列表API
  • GET /tools/{tool} - 工具下载

6.3 数据格式

  • 统一JSON格式数据交换
  • 统一错误响应格式
  • 支持数据分页和筛选