0%

license试用接口

license 设计,目前是 App 下载完成后进行 License 申请, 然后在服务使用期间进行 license 校验,首先完成试用逻辑的 license 生成设计。

项目背景

当前工作空间项目打包产生 App 下载使用时,需要对应的 license,可以在下载 App 时,把当前 App 对应的 exe 和试用的 license 文件打包成一个 Zip 压缩包,压缩包中还可以提供一些说明信息,当前 exe 运行安装方式,并且在安装过程中选择试用的 license 文件等信息的文件,类似如下效果:

Meper-App.zip
– MeperApp.exe
– MeperTrialLicense.identity
– Readme.md

所以需要MeperTrialLicense.identity试用许可证去验证当前 App 的试用时间。

需求说明

license server 需要开放接口可以针对AppId 进行试用许可证的申请, 针对 MEPER-Cloud 的逻辑,下载 App 需要对应的 SI 账号并且是进行了企业认证的。所以在下载 App 的时候,MEPER 或者 portal 是可以获取到当前的用户信息还有对应下载的 App 信息。

所以在用户请求下载的时候,我们返回的文件流可以是系统动态产生的压缩文件流,MeperTrialLicense.identity可以在请求的过程中产生, license server 需要开放一个接口,接口可以接受 AppId 和 SI 的 UserId 去产生对应的试用许可证文件。

需求设计

Portal server

用户如果从 Vue 前端页面请求的话,是先请求到 Portal Server,Portal Server 直接转发请求到 Meper-Cloud 中进行压缩文件流的返回,同时可以在 Portal Server 中做一次权限验证。

Meper-Cloud

MEPER 服务做 App 下载请求的收口操作,当 Project 进行打包 App 时,MEPER 会导出当前 Project 的数据做成 App 数据包,然后请求 Inno Setup的server去打包对应 App 的 exe 文件。

当收到App 下载请求时MEPER 会先拿到当前 App 对应的exe 文件,然后在通过接口请求拿到 AppId 和 User信息,用 Appid 和 User 信息到 license server 去申请试用许可证的文件(MeperTrialLicense.identity),将试用许可证文件和 exe 文件打包 zip 压缩返回用户下载。

license server

license server 则需要开放接口,产生对应的试用许可证,并且支持对应试用许可证的校验逻辑。

创建试用许可证接口

MeperTrialLicense.identity文件的产生接口。

接口请求参数

1
2
3
4
5
6
7
8
9
Request
{
"AppId":"1000011", // 下载试用的 App
"UserId":"10001021", // 在 MEPER 中认证的 SI 用户 ID
"LoginName":"Ryan", // SI 登录名
"FullName":"杨正武", // SI 注册全名
"CompanyId":"1010210", // SI 认证企业 Id
"CompanyName":"苏州华冠" // SI 认证企业名称
}

返回对应的试用许可证文件

MeperTrialLicense.identity验证接口
1
2
3
4
5
6
Request
{
"AppId":"1010101", // AppId
"File":"*.identity", // 二进制试用许可证
"MAC":"s12-s12-d-a9s" // 运行机器的 MAC 地址
}

当license server 第一次收到当前试用许可证的验证请求时,记录当前请求的 MAC 地址,然后校验许可证文件的有效性和对应 AppId 的一致性,并开始试用时间。

第一次请求时接口需要处理的逻辑

1、验证许可证有效性
2、验证许可证和 AppId 是否对应
3、记录首次请求的 MAC 地址
4、开始试用时间

后续请求的逻辑

1、验证许可证有效性
2、AppId 验证
3、MAC 地址验证
4、时间验证

开放查询identity验证接口

license server 开放查询接口,可以根据 UserId 或者 CompanyId 进行查询当前用户或者企业的试用许可证,插叙对应许可证对应的 App 和剩余试用时间等信息。

用户可以通过试用的许可证找到对应的 App 进行后续许可证的申请。