smart-license 2.0发布,守护你的软件权益

时间:2022-11-19 18:07:39

smart-license 是一款用于安全加固的开源项目。 主要服务于非开源产品、商业软件、具备试用功能的付费软件等,为软件提供授权制的使用方式。

一、适用场景

  • 非开源产品、商业软件、收费软件。
  • 限制产品的传播性,每个客户拥有专属 License。
  • 同一款软件发行包根据 License 的不同提供不同的服务能力。
  • 限定软件授权时效。

二、产品特色

  • 开源,代码完全公开,License的生成原理是透明的。
  • 易用,秒级生成License。
  • 安全,生成的 License 在一定程度上具备防篡改能力,破解难度大。

三、更新说明

这是一个颠覆性的版本,为了给用户提供更好的使用体验。我们果断的剔除了 1.x 版本中的 License 生成功能,并提供了 License 的在线申请服务,整个过程仅需几秒钟。

在 smart-license 2.0 中,我们将协议规则调整为语言无关的模式。这意味着除了Java,未来我们还能为其他编程语言提供同等的授权服务。

3.1 Shield.盾

这是License在线申请服务的产品名,寓意着:守护。

你可以通过我们的使用文档连接找到该服务地址。在此感谢为我们提供服务器的朋友,以及前端框架layui-vue作者给予的技术支持。

3.2 客户端

客户端仅做了少许的优化,老用户稍加调整便可适配过来,不过原有的License 文件需要重新生成。

<dependency>
    <groupId>org.smartboot.license</groupId>
    <artifactId>license-client</artifactId>
    <version>2.0</version>
</dependency>

示例程序:

private void loadLicense(Properties properties) {
    1️⃣ License license = new License(entity -> EnterprisePlugin.this.uninstall(),10);

    2️⃣ try (InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("License.shield")) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] bytes = new byte[1024];
        int size;
        while ((size = inputStream.read(bytes)) > 0) {
        byteArrayOutputStream.write(bytes, 0, size);
        }
    3️⃣  LicenseEntity entity = license.loadLicense(byteArrayOutputStream.toByteArray());
    4️⃣  properties.load(new ByteArrayInputStream(entity.getData()));
        System.out.println(properties);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
  1. 初始化 License 客户端。注册license过期后的回调逻辑,以及过期状态下的回调重复触发频率(单位:秒)。
  2. 加载 License 文件流。
  3. 解析 License 进行合法性校验,并获取授权内容。
  4. 基于授权内容进行软件运行时的配置初始化。

四、最后

我们寄希望于用技术的力量来守护技术人的权益,所以创造了 smart-license 。

但因某些因素致使该项目长期处于托管状态,在此向曾经关注该项目,以及前来技术咨询的朋友说是抱歉。

我们无法承诺会持续维护该项目,也没有计划在社区提供免费的咨询服务。

如果有朋友愿意为这个项目贡献一份力量(包括且不限于:策略优化、文档、推广运营、付费咨询),在此表示非常的欢迎和感谢!

仓库:https://gitee.com/smartboot/smart-license

文档:https://smartboot.gitee.io/smart-license/ (内有 Shield.盾 的跳转连接)