软件License许可设计思路
销售license是商业软件的贯用商业模式。用户向商家购买软件安装盘搭载license许可,用户才可以使用该系统。我们作为一个软件开发者,为了保护自身的版权,在软件开发过程中也不可避免的会设计license管控机制。下面就讲一下设计一个基础的license控制机制需要考虑的方方面面。
license管控方式
license管控的方式可简称为认证和鉴权。认证是指用户身份认证,鉴权是检验用户是否具备使用软件某些功能的权限。
1. 通过软件的认证机制可以判断用户身份的合法性,只有身份合法的用户才可以使用软件。认证机制可以防止黑客或者竞争对手使用系统,研究仿制,维护产品的原创性和竞争力。
2. 鉴权是控制用户能使用软件的哪些功能,是能使用软件的功能全集呢还是只能使用一个子集。鉴权方式有两种:功能有无的鉴权-有权限的用户能操作功能界面使用软件,无权限的用户功能入口屏蔽;功能受限使用-根据用户购买的license规格限制用户的使用次数或者使用软件处理的数据规模。
3.license使用期限的限制,超过期限后软件不允许再使用。需要申请延期或者重新申请license。
License实现方案
下面讲一下License控制中认证和鉴权的常用处理方式。
1.前面说了认证的目的是识别用户是否为合法用户,对于在线系统通常的做法是设计一个登陆认证机制,通过用户名和密码登录,登录成功的用户即是合法用户。离线单机工具一般是通过绑定软件安装的机器或者发放序列号的方式控制.如果是绑定软件安装的机器需要在license申请前采集机器指纹(含CPU、硬盘、MAC地址等一种或者几种信息的加密数据)。机器指纹的加密算法一般是采用不可逆的加密算法,如MD5等。
2. 对于鉴权而言,需要将控制的功能项编码和受限使用的控制信息加密后放到license文件中,在系统运行过程中实时检测。鉴权信息一般是通过可逆的加密算法加密,如RSA非对称加密算法。
3.license发放的时候用公钥加密,软件运行时通过私钥解密。
License管理流程
既然License是一种管控系统使用的凭证,那么肯定就有申请凭证、审核申请的过程。涉及的角色也包括申请人、审批人、用户。常规流程如下:
上面只是一个最简易的license管理流程,实际设计中需要根据具体的业务来,例如上面的审核人是几级,如何设置等,不同的组织结构是不一样的。有的license管理还需要考虑升级、延期的处理;毕竟升级旧的license和新申请一个license在商务价格上是不一样的。