销售license是商业软件的贯用商业模式。用户向商家购买软件安装盘搭载license许可,才可以使用该软件。我们作为软件开发者,为了保护自身的权益,在软件开发过程中也不可避免的会设计license管控机制。下面就讲一下设计一个基础的license控制机制需要考虑的方方面面。

license管控方式

license大体有两种管控方式,可概括为认证和鉴权。认证是指用户身份认证,鉴权是检验用户是否具备使用软件某些功能的权限。

1. 认证:通过软件的认证机制可以判断用户的身份是否合法,只有身份合法的用户才可以使用软件。身份认证可以防止黑客或者竞争对手使用软件,做研究仿制;维护产品的原创性和竞争力。

2. 鉴权:鉴权是限制用户能使用软件的哪些功能,是能使用整个软件的功能全集呢还是只能使用一个子集。鉴权方式有两种:功能有无的鉴权-有权限的用户能操作功能界面使用软件,无权限的用户屏蔽操作入口;功能受限使用的鉴权-根据用户购买的license规格限制用户使用的次数或者使用软件处理数据的规模。

3.有效期:license使用期限的限制,超过期限后软件不允许再使用。需要申请延期或者重新申请license。

License实现方案

下面讲一下License中认证和鉴权的常规实现方式。

1.认证:前面说了认证的目的是识别用户是否为合法用户,对于在线系统通常的做法是设计一个登录认证机制,通过用户名和密码登录,登录成功的用户即是合法用户。离线单机工具一般是通过绑定软件安装的机器或者发放序列号的方式控制。如果是绑定软件安装的机器需要在license申请前采集机器指纹(含CPU、硬盘、MAC地址等一种或者几种信息的加密数据)。机器指纹的加密算法一般是采用不可逆的加密算法,如MD5等。

2. 鉴权:对于鉴权而言,需要将控制的功能项编码和受限使用的控制信息加密后放到license文件中,在软件运行过程中实时检测。鉴权信息一般是通过可逆的加密算法加密,如RSA非对称加密算法。license发放的时候用公钥加密,软件运行时通过私钥解密。

License管理流程

既然License是一种管控系统使用的凭证,那么肯定就有申请凭证、审核申请的流程。涉及的角色也包括申请人、审批人、用户。常规流程如下:

上面只是一个最简易的license管理流程,实际设计中需要根据具体的业务来,例如上面的审核人分几级,如何设置等,不同的组织结构是不一样的。有的license管理还需要考虑升级、延期的处理;毕竟升级旧的license和新申请一个license在商务价格上是不一样的。

软件License认证方案的设计思路的更多相关文章

  1. (原创)通用查询实现方案(可用于DDD)[附源码] -- 设计思路

    [声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3988592.html).   [系列文章] 通用查询实现方案(可用于DDD)[附源码] -- ...

  2. 通用查询实现方案(可用于DDD)[附源码] -- 设计思路

    原文:通用查询实现方案(可用于DDD)[附源码] -- 设计思路 [声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3988592.html).   ...

  3. WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方 ...

  4. EventStore的设计思路

    EventStore的设计思路 最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event ...

  5. FPGA学习:VHDL设计灵活性&不同设计思路比较

    概要 由于VHDL编程实现数字电路具有很高的灵活性,为多种不同的思路编写实现同一种功能提供了可能.这些不同的设计思路,在耗费资源,可靠性,速度上也有很大的差异,往往需要我们根据实际需求和资源条件选择适 ...

  6. IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路

    1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...

  7. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  8. Redis入门指南(第2版) Redis设计思路学习与总结

    https://www.qcloud.com/community/article/222 宋增宽,腾讯工程师,16年毕业加入腾讯,从事海量服务后台设计与研发工作,现在负责QQ群后台等项目,喜欢研究技术 ...

  9. 第三篇:Retrofit SDK的设计思路

    2016-05-08 15:24:03 Retreofit毫无疑问是一个优美的开源框架,有轻量级.耦合性低.扩展性好.灵活性高的特点,那么Retrofit的设计者们到底是怎么样做到这些的呢?我希望能够 ...

随机推荐

  1. ubuntu16 ftp 服务 vsftp 配置

    转载:沐心_ 地址:http://bbs.csdn.net/topics/392186116------------------------------------------------------ ...

  2. MySQL数据库基础(MySQL5.7安装、配置)

      写在前面: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

  3. 对TCP三次握手四次分手还不清楚的速度进,超简单解析,明白了就很好记!

    关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手和四 ...

  4. Dubbo广播模式下报错:Can't assign requested address解决办法

    原因: 尝试使用Dubbo的multicast模式,发现一运行就报Can't assign requested address的错误,造成这种原因的主要是系统中开启了IPV6协议(比如window7) ...

  5. POJ - 2253 Frogger 单源最短路

    题意:给定n个点的坐标,问从第一个点到第二个点的最小跳跃范围.d(i)表示从第一个点到达第i个点的最小跳跃范围. AC代码 #include <cstdio> #include <c ...

  6. filebeat -> logstash -> elasticsearch -> kibana ELK 日志收集搭建

    Filebeat 安装参考 http://blog.csdn.net/kk185800961/article/details/54579376 elasticsearch 安装参考http://blo ...

  7. JQ小随笔

    JQ  select的val 会自动选择option的val layer 弹窗插件 Validation-Engine验证插件

  8. mysql导入导出数据

    mysqldump是MySQL自带的导出数据工具,通常我们用它来导出MySQL中,但是有时候我们需要导出MySQL数据库中某个表的部分数据作为测试. mysqldump命令中带有一个 --where/ ...

  9. DM6446 uboot分析

    1. 顶层目录下的Makefile 按照配置顺序: davinci_config :    unconfig @./mkconfig $(@:_config=) arm arm926ejs davin ...

  10. 工作中常用的linux命令(1)

    1.cd :进入一个目录,例如进入/home/admin目录:cd /home/admin 2.pwd :查看当前所在目录:如图: 3.ls :列出当前目录下的所有文件: 4.ll :列出当前目录下的 ...