# license认证 **Repository Path**: ckpe/license ## Basic Information - **Project Name**: license认证 - **Description**: DSJ License 是一个企业级授权中心系统,主要用于为Java项目生成和验证软件许可证(License)。系统采用前后端分离架构,提供两种使用方式: SDK集成包:提供给其他Java项目以JAR包形式集成,用于License验证 Web管理平台:提供可视化界面用于生成、管理License文件 本系统专为内网环境设计,支持离线运行,无需互联网连接。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2025-12-29 - **Last Updated**: 2025-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DSJ License Authorization Center ## 说明 本项目所有源码是大模型Qoder的帮助下完成的,DSJ为项目代号并无其他特殊含义。 ## 项目简介 DSJ License 是一个企业级授权中心系统,主要用于为Java项目生成和验证软件许可证(License)。系统采用前后端分离架构,提供两种使用方式: 1. **SDK集成包**:提供给其他Java项目以JAR包形式集成,用于License验证 2. **Web管理平台**:提供可视化界面用于生成、管理License文件 本系统专为内网环境设计,支持离线运行,无需互联网连接。 ## 技术栈 ### 后端 - **框架**: Spring Boot 2.7.x - **持久层**: MyBatis-Plus 3.5.x - **数据库**: - SQLite (默认,轻量级) - 达梦数据库 DM8 (可选,企业级) - **License生成**: TrueLicense / 自研RSA加密方案 - **构建工具**: Maven 3.8+ - **JDK版本**: JDK 17 ### 前端 - **框架**: Vue 3.x - **构建工具**: Vite 4.x - **UI组件库**: Element Plus - **状态管理**: Pinia - **路由**: Vue Router 4.x - **HTTP客户端**: Axios ## 项目结构 ``` dsj-license/ ├── dsj-license-core/ # 核心License生成和验证模块 │ ├── src/main/java/ │ │ └── com/dsj/license/core/ │ │ ├── generator/ # License生成器 │ │ ├── validator/ # License验证器 │ │ ├── crypto/ # 加密算法 │ │ └── model/ # License模型 │ └── pom.xml │ ├── dsj-license-sdk/ # 供其他项目集成的SDK │ ├── src/main/java/ │ │ └── com/dsj/license/sdk/ │ │ ├── LicenseManager.java │ │ ├── annotation/ # 注解支持 │ │ └── interceptor/ # 拦截器 │ └── pom.xml │ ├── dsj-license-server/ # Web服务端 │ ├── src/main/java/ │ │ └── com/dsj/license/server/ │ │ ├── controller/ # 控制器 │ │ ├── service/ # 业务逻辑 │ │ ├── mapper/ # 数据访问层 │ │ ├── entity/ # 实体类 │ │ └── config/ # 配置类 │ ├── src/main/resources/ │ │ ├── application.yml # 配置文件 │ │ ├── mapper/ # MyBatis映射文件 │ │ └── db/ # 数据库初始化脚本 │ └── pom.xml │ ├── dsj-license-web/ # Web前端 │ ├── src/ │ │ ├── api/ # API接口 │ │ ├── views/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # 状态管理 │ │ └── utils/ # 工具函数 │ ├── package.json │ └── vite.config.js │ ├── docs/ # 文档 │ ├── api/ # API文档 │ ├── guide/ # 使用指南 │ └── design/ # 设计文档 │ ├── scripts/ # 脚本文件 │ ├── generate-keys.sh # 密钥生成脚本 │ └── package.sh # 打包脚本 │ ├── pom.xml # 父POM └── README.md ``` ## 功能特性 ### 核心功能 1. **License生成** - 基于RSA非对称加密 - 支持自定义License参数(有效期、MAC地址、CPU序列号等) - 支持多种绑定策略(硬件指纹、时间限制、功能模块限制) - 生成加密的.lic文件 2. **License验证** - 离线验证 - 硬件指纹校验 - 有效期检查 - 防篡改校验 - 优雅降级处理 3. **Web管理平台** - License生成管理 - 客户信息管理 - License激活记录查询 - 密钥对管理 - 操作日志审计 4. **SDK集成** - 简单注解式集成 - 自动License校验 - 灵活的拦截器配置 - 详细的错误提示 ## 快速开始 ### 环境要求 - JDK 17 或更高版本 - Maven 3.6+ - Node.js 16+ (前端开发) - SQLite (默认) 或 达梦数据库 DM8 ### 后端启动 1. **克隆项目** ```bash git clone cd dsj-license ``` 2. **编译项目** ```bash mvn clean install ``` 3. **配置数据库** 默认使用SQLite,无需额外配置。如需使用达梦数据库,修改 `dsj-license-server/src/main/resources/application.yml`: ```yaml spring: datasource: driver-class-name: dm.jdbc.driver.DmDriver url: jdbc:dm://localhost:5236/DSJTESTDB username: SYSDBA password: SYSDBA ``` 4. **启动服务** ```bash cd dsj-license-server mvn spring-boot:run ``` 服务默认运行在 `http://localhost:8080` ### 前端启动 1. **安装依赖** ```bash cd dsj-license-web npm install ``` 2. **启动开发服务器** ```bash npm run dev ``` 前端默认运行在 `http://localhost:5173` 3. **生产构建** ```bash npm run build ``` ### SDK集成使用 1. **添加依赖** 在您的项目 `pom.xml` 中添加: ```xml com.dsj dsj-license-sdk 1.0.0 ``` 2. **配置License文件路径** 在 `application.yml` 中配置: ```yaml dsj: license: path: /path/to/license.lic public-key-path: /path/to/publicKey.key ``` 3. **启用License验证** 在启动类添加注解: ```java @SpringBootApplication @EnableDsjLicense public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 4. **使用注解保护接口** ```java @RestController @RequestMapping("/api") public class YourController { @GetMapping("/protected") @RequireLicense(modules = "CORE_MODULE") public Result protectedMethod() { return Result.success(); } } ``` ## License生成示例 ### 通过Web界面生成 1. 访问 `http://localhost:5173` 2. 登录系统(默认账号:admin/admin123) 3. 进入"License生成"页面 4. 填写客户信息和授权参数 5. 点击"生成License" 6. 下载生成的.lic文件 ### 通过代码生成 ```java LicenseParam param = LicenseParam.builder() .subject("客户名称") .issuedTime(new Date()) .expiryTime(DateUtils.addYears(new Date(), 1)) .consumerType("User") .consumerAmount(1) .info(LicenseCheckModel.builder() .ipAddress(Arrays.asList("192.168.1.100")) .macAddress(Arrays.asList("00-50-56-C0-00-08")) .cpuSerial("BFEBFBFF000906E9") .mainBoardSerial("1234567890") .build()) .build(); LicenseGenerator generator = new LicenseGenerator(); generator.generateLicense(param, "license.lic"); ``` ## 数据库说明 ### SQLite (默认) - 轻量级,无需安装 - 数据库文件:`dsj-license.db` - 适用于小规模部署 ### 达梦数据库 DM8 - 国产企业级数据库 - 高性能、高可靠性 - 适用于大规模企业部署 - 初始化脚本位于:`dsj-license-server/src/main/resources/db/dm8/` ## 部署说明 ### 单机部署 1. 编译打包 ```bash mvn clean package -DskipTests ``` 2. 后端部署 ```bash cd dsj-license-server/target java -jar dsj-license-server-1.0.0.jar ``` 3. 前端部署 - 将 `dsj-license-web/dist` 目录下的文件部署到Nginx或其他Web服务器 ### Docker部署 ```bash # 构建镜像 docker build -t dsj-license:1.0.0 . # 运行容器 docker run -d -p 8080:8080 \ -v /path/to/license:/app/license \ dsj-license:1.0.0 ``` ## 配置说明 ### 主要配置项 ```yaml dsj: license: # License密钥存放路径 key-store-path: /path/to/keystore # 私钥密码 private-key-password: your-password # License有效期检查间隔(分钟) check-interval: 60 # 是否严格模式(License失效后是否停止服务) strict-mode: true ``` ## 安全建议 1. **密钥管理** - 私钥务必妥善保管,不要泄露 - 定期更换密钥对 - 使用强密码保护私钥 2. **License文件** - License文件可分发给客户 - 建议使用HTTPS传输License文件 - 可对License文件进行二次加密 3. **Web平台** - 修改默认管理员密码 - 启用访问日志审计 - 限制管理平台访问IP ## 常见问题 ### Q1: License验证失败? - 检查License文件是否完整 - 确认公钥文件路径正确 - 验证硬件信息是否匹配 ### Q2: 如何获取硬件信息? ```java SystemInfoUtil util = new SystemInfoUtil(); String cpuSerial = util.getCpuSerial(); String macAddress = util.getMacAddress(); ``` ### Q3: 支持哪些绑定策略? - IP地址绑定 - MAC地址绑定 - CPU序列号绑定 - 主板序列号绑定 - 组合绑定 ## 开发计划 - [ ] 支持License在线激活 - [ ] 增加License使用统计 - [ ] 支持临时License - [ ] 移动端管理界面 - [ ] 多租户支持 ## 许可协议 本项目采用 Apache License 2.0 协议 ## 联系方式 - 项目地址: [GitHub Repository] - 问题反馈: [Issue Tracker] - 技术支持: support@dsj.com ## 更新日志 ### v1.0.0 (2025-12-03) - 初始版本发布 - 基础License生成和验证功能 - Web管理平台 - SDK集成支持 - SQLite和达梦数据库支持