# license
**Repository Path**: ythct/license
## Basic Information
- **Project Name**: license
- **Description**: 开发的系统需要设置授权才能使用,需要支持一些个性化参数,例如用户注册数量、在线用户数量等,本项目使用TrueLicense生成授权证书。
我不喜欢麻烦,尽量做到开箱即用,内置了密钥对,也可以使用keytool生产自己的密钥对,填写一下配置文件就好。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 13
- **Created**: 2023-11-05
- **Last Updated**: 2023-11-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 授权证书
[]()
[](https://spring.io/projects/spring-boot)
[]()
[TOC]
[]()
[]()
## 1. 介绍
开发的系统需要设置授权才能使用,需要支持一些个性化参数,例如用户注册数量、在线用户数量等,本项目使用TrueLicense生成授权证书。
我不喜欢麻烦,尽量做到开箱即用,内置了密钥对,也可以使用keytool生产自己的密钥对,填写一下配置文件就好。
## 2. 项目结构
license-core 证书相关操作核心代码
license-creator-spring-boot-starter 生成证书
license-creator-webapp 生成证书的一个webapp
license-verify-spring-boot-starter 证书校验模块
license-verify-demo 证书校验示例
## 3. 使用方法
* 新建项目引入`license-verify-spring-boot-starter`模块
```xml
com.zdf.license
license-verify-spring-boot-starter
1.0.2
```
* (根据需要)创建个性化参数校验,新建一个类继承`ACustomVerifyListener`
```java
/**
* 当类注入到springboot中时候,初始化时自动将实例保存在了父类,
* 每次启动校验父类都会调用 verify(LicenseExtraParam licenseExtra)
*/
@Component
public class UserNumVerifyListener extends ACustomVerifyListener {
/** ParamType 在生成证书与回显证书信息时候非常有用 */
@Override
public ParamType paramType() {
return new ParamType("userNum", "用户数量", Integer.class);
}
/** 校验用户数量是否超出证书限制 custom 为证书中的自定义参数 */
@Override
protected boolean verify(Integer custom, Integer test){
return test <= custom;
}
/** 类型转换 */
@Override
protected Integer typeConversion(Object custom) {
return Integer.valueOf(custom.toString());
}
}
```
* 在需要校验的地方引入这个类并调用校验方法
* 使用 `@VLicense` 在关键入口做校验,验证证书是否过期
* 校验使用可以参考`license-verify-demo` 模块的 `TestController` 类
* creator配置文件(可以不写,内置有密钥对)
```yaml
license:
generate:
filename: license.lic
subject: cspt
privateAlias: privateKey
keyPass: wsn++123
storePass: wsn++123
privateKeysStorePath: /privateKeys.store
```
* verify配置文件(可以不写,内置有密钥对)
```yaml
license:
verify:
handler:
enabled: true
url: /license #http接口地址,需要在在自己的项目中取消这个路径的权限校验
subject: cspt
publicAlias: publiccert
publicKeysStorePath: /publicCerts.store
storePass: wsn++123
licensePath: license.lic
```
## 4. 示例
提供两个可运行的项目示例
1. license-creator-webapp
> 生成证书webapp,可以直接拿来用
2. license-verify-demo
> 校验证书示例app
## 5. 更新日志
### 2023-3-20
* 增加序列号,为每个服务器生成一个唯一的序列号,保证证书只能为此设备授权,防止虚拟机越狱
### 2022-6-28
* 增加路由设置,调用者不再需要手动写 controller,只需要在配置文件中开启 `license.verify.handler.enabled = true` 填写 `license.verify.handler.url = /license`
* 生成证书APP增加校验按钮,生成证书时候可以手动选择开启某个关键信息校验,有IP校验、MAC校验、CPU序列号校验、主板序列号校验