Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[proposal] Licensing System Service #18

Open
uptutu opened this issue Dec 29, 2021 · 2 comments · May be fixed by #20
Open

[proposal] Licensing System Service #18

uptutu opened this issue Dec 29, 2021 · 2 comments · May be fixed by #20

Comments

@uptutu
Copy link

uptutu commented Dec 29, 2021

提供 License 发行和验证功能的工具包,方便 ISV 可以直接使用,从而实现一套 License 认证流程。

我尝试初拟了一份整个 license 认证流程,从开发商发放 license 到平台的激活。
圖片
平台统一提供一个认证接口供类似于:

POST host/license
| license | Required | string |
| pluginID| Required | string |

插件本身提供一个激活接口,如果没有也可以提供一个我们规范的拓展点,然后使用我们提供的拓展插件。帮助开发者实现一整套逻辑。

总感觉方案中还有很多的问题,希望大家不吝赐教。

一下是我找到的一些相关参考:
Implementation of the Licensing System for a Software Product
一种基于RSA+AES算法实现的软件授权License设计思路
a pattern language of software licensing

@uptutu uptutu linked a pull request Dec 29, 2021 that will close this issue
@uptutu
Copy link
Author

uptutu commented Dec 30, 2021

补充设计

整体认证流程

License 始终由发行商(开发者)发行

License 认证许可始终由发行商(开发者)的产品校验

下文「发行商」皆代表一个插件的发行者。

一套制定的认证接口

平台制定一套 License 认证接口规范,某插件实现了该规范皆为需要认证的插件。

平台因为有统一代理,能获取到每个插件的接口,可以轻松识别哪些插件需要 License 认证,这里平台侧也能做一些相应认证的页面展示。

获取 License

用户需要使用发行商的插件,需要找发行商获取对应 License。

比如说:

  • 发行商有自己的网站,以及一套用户系统,以用户信息作为唯一认证。用户通过发行商的网站获取到 License。
  • 用户直接向发行商联系,通过电话、短信、邮件各种形式获取到发行商的 License。
  • 【联网情况】安装好了的 Plugin 可以通过接口实现直接到发行商服务器的注册请求:通过设置一个安装环境的唯一凭证或身份,同时需要有平台接口的回调地址,让 License 认证流经平台制定的认证接口。

输入 License

【先走平台侧】(用户/云回调)向统一的 License 认证接口发送请求。平台再向 Plugin 的 License 认证接口(平台制定的认证接口)发送认证请求

校验 License

这时 License 信息来到了 Plugin 内,Plugin 采用自身校验逻辑对 License 校验,并返回校验结果,如果有资源限制,且返回对应的一些资源限制信息让平台能有记录。

圖片

@uptutu
Copy link
Author

uptutu commented Dec 30, 2021

问题

  • 如何在非联网状况下保证 License 不可复用的问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant