SpringBoot⽣成License的实现⽰例
前⾔
License指的是版权许可证,当我们开发完系统后,如果不想让⽤户⼀直⽩嫖使⽤,⽐如说按时间续费,License的作⽤就有了。
我们可以给系统指定License的有效期,控制系统的可⽤时间。
那么对于SpringBoot项⽬,如何增加License呢?接下来王⼦给⼤家带来⼀套解决⽅案。(当然实现⽅式不⽌⼀种)
⽣成License
下载后打开cloud-license-serve项⽬直接启动即可。
会得到类似如下结果,分别代表ip地址、mac地址、cpu序号、主板序号。
{
"ipAddress": [
"192.168.80.1",
"192.168.220.1"
],
"macAddress": [
"01-51-56-C0-00-01",
"00-52-56-C0-00-08",
"BC-54-2D-DF-69-FC"
],
"cpuSerial": "BFECFBFF000806EC",
"mainBoardSerial": "L1HF16301D5"
}
使⽤JDK⾃带的 keytool ⼯具⽣成公私钥证书库:
假如我们设置公钥库密码为:public_password1234,私钥库密码为:private_password1234,则⽣成命令如下:
#⽣成命令
keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -keypass "private_password1234" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" #导出命令
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -file ""
#导⼊命令
keytool -import -alias "publicCert" -file "" -keystore "publicCerts.keystore" -storepass "public_password1234"
上述命令执⾏完成之后,会在当前路径下⽣成三个⽂件,分别是:privateKeys.keystore、publicCerts.k
eystore、。其中⽂件不再需要可以删除,⽂件privateKeys.keystore⽤于当前
的ServerDemo 项⽬给客户⽣成license⽂件,⽽⽂件publicCerts.keystore则随应⽤代码部署到客户服务器,⽤户解密license⽂件并校验其许可信息。
调⽤的参数是⼀个json参数,格式如下:
{
"subject": "license_demo",
"privateAlias": "privateKey",
"keyPass": "private_password1234",
"storePass": "public_password1234",
"licensePath": "C:/Users/zifangsky/Desktop/license_demo/license.lic",
"privateKeysStorePath": "C:/Users/zifangsky/Desktop/license_demo/privateKeys.keystore",
"issuedTime": "2018-07-10 00:00:01",
"expiryTime": "2019-12-31 23:59:59",
"consumerType": "User",
"consumerAmount": 1,
"description": "这是证书描述信息",
"licenseCheckModel": {
"ipAddress": ["192.168.245.1", "10.0.5.22"],
"macAddress": ["00-50-56-C0-00-01", "50-7B-9D-F9-18-41"],
"cpuSerial": "BFEBFBFF000406E3",
"mainBoardSerial": "L1HF65E00X9"
}
}
如果请求成功,那么最后会在 licensePath 参数设置的路径⽣成⼀个license.lic 的⽂件,这个⽂件就是给客户部署代码的服务器许可⽂件。
使⽤License
如果⼩伙伴们按照上⽂的步骤⼀步⼀步的跟着实现,我们已经获得了license.lic,接下来就是把license使⽤到我们⾃⼰的项⽬中了。springboot原理pdf
cloud-license-client就是引⼊项⽬的⼀个例⼦,打开可以直接使⽤。
引⼊⾃⼰的项⽬只需将以下⽂件导⼊
并配置好LicenseCheckInterceptor就可以使⽤了。配置⽅法在InterceptorConfig类中,可以参考。
这⾥需要注意的是使⽤license需要两个⽂件:license.lic,publicCerts.keystore
演⽰项⽬配置的路径是绝对路径,⼀般我们会配置相对路径,把两个⽂件放到项⽬下,配置位置在LicenseCheckListener类中
修改如下部分改为相对路径读取就可以了
这⾥就不演⽰如何修改了,因为修改起来很容易。
还需要注意⼀点:
对于LicenseCheckModel,LicenseCreatorParam两个类,引⼊到⾃⼰的客户端后⼀定要保证包名与⽣成license时的包名⼀致,不然会导致序列化失败的问题。
总结
好了,到这⾥本⽂的分享就结束了,本⽂分享的其实是License的使⽤说明,并没有带⼤家阅读源码去看原理,感兴趣的⼩伙伴可以⾃⾏阅读⼀下项⽬源码,也很容易看懂哦。
到此这篇关于SpringBoot⽣成License的实现⽰例的⽂章就介绍到这了,更多相关SpringBoot⽣成License内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。