如何实现现场安装Web应用程序(最好是跨平台)的许可证管理?[关闭]
-
09-06-2019 - |
题
我有一个在基于 Gentoo 的 LAMP 堆栈上运行的 Web 应用程序。我的客户购买软件作为服务,我托管一切。然而,客户自己的网络内有一些现场部署的需求。
目前,由于我托管系统,因此应用程序中没有内置许可证管理。我根据用户帐户和数据容量进行计费(这是一个用于计量数据的处理和分析应用程序),我只是设置客户支付的费用,而客户无法自己设置这些东西。即使没有现场安装,也应该进行更改以获得更好的可扩展性。
我正在寻找一个许可证管理框架和/或您自己实施的或在其他地方看到效果良好的典型方法。我的要求是:
- “足够安全”而不是“军用级别”
- 非常不引人注目
- 防止许可证所有者在仅获得一个许可证的情况下在多个工厂运行该系统
- 使用户账户数量和数据容量合理防篡改且易于升级/降级
- 无需互联网连接即可工作(拥有完全独立的系统将是选择现场解决方案的要点),但如果在安装过程中必须有临时连接,这也是可以接受的
对于某些现场场景,需要某些特定的操作系统,通常是某些版本的 Windows Server,但各种 Linux 发行版也越来越流行,尤其是在公共部门。
从用户的角度来看,我对FogBugz中的许可证管理非常满意,从供应商的角度来看,Joel Spolsky似乎也很满意,而且它是跨平台的,所以这对我的工作有很大的参考意义。正在瞄准。
解决方案
不。您花在编写许可证密钥系统上的每一个小时都是您没有花在修复错误或添加功能上的一个小时。通过编写许可证管理系统,您正在花费资源来降低产品的价值!
保护您的代码,聘请律师并准备好起诉任何侵犯您版权的人,然后就到此为止了。
其他提示
我见过一家公司使用预构建的 Linux VM 映像来部署其现场 Web 系统。客户端在 VMWare 下运行它,您无需担心客户端系统上的实际操作系统。另外,它们不提供运行 Web 服务器的实际 Linux 系统的登录信息,因此最终用户实际上无法进入并修改任何内容。
我不确定他们如何处理许可限制,但它们就在那里。每当客户端请求更多用户许可证时,可能会提供更新的 VM 映像。
尽管这并不能直接解决防止多个实例运行的需要。我想你总是可以根据系统配置执行某种激活密钥系统。
我确信您可以在大多数操作系统上获取 CPU 的序列号;你可以使用它,毕竟如果他们移植了CPU,可以安全地假设旧机器将不再使用?
其次,可以使用网络服务来了解当前的数据容量以及客户已支付的费用。