一种软件授权方法及系统与流程

文档序号:16671018发布日期:2019-01-18 23:34阅读:480来源:国知局
一种软件授权方法及系统与流程

本申请涉及软件管理技术领域,尤其涉及一种软件授权方法及系统。



背景技术:

用户在向软件公司购买软件时,软件公司的license(许可证)服务器根据用户的需求生成用于对软件产品进行授权的许可证(license),并分发给用户。当用户运行软件时,运行软件的用户设备会与license服务器建立网络连接,以使license服务器验证用户拥有的许可证是否有效。

现有技术的软件授权方法中,为了能保证license服务器对用户拥有的许可证进行验证,运行软件的用户设备必须能与license服务器建立网络连接,因此,用户设备必须在公共网络中运行。但是,一些用户出于数据保密等原因,会要求运行软件的用户设备与公共网络隔离,即处于内网环境中,因此,这些用户设备就无法与license服务器进行许可证的验证。

可见,如何能够为内网环境中的用户设备提供软件的授权,成为本领域技术人员亟待解决的技术问题。



技术实现要素:

本申请实施例提供了一种软件授权方法及系统,以实现对内网环境中的用户设备提供软件授权。

第一方面,本申请实施例提供了一种软件授权方法,包括:

过滤器模块拦截软件的启动请求;

所述过滤器模块根据所述启动请求向授权客户端发送授权验证请求消息;

所述授权客户端在接收到所述授权验证请求消息的情况下,根据从授权服务端预先获取的许可证文件对所述软件进行授权验证;

所述过滤器模块根据所述授权客户端的授权验证结果处理所述启动请求;

其中,所述过滤器模块和所述授权客户端植入在所述软件中。

第二方面,本申请实施例提供了一种软件授权系统,包括:

授权服务端、过滤器模块和授权客户端;

所述授权服务端,用于生成许可证文件;

所述过滤器模块,用于拦截软件的启动请求;以及,根据所述启动请求向所述授权客户端发送授权验证请求消息;

所述授权客户端,用于在接收到所述授权验证请求消息的情况下,根据所述许可证文件对所述软件进行授权验证;

所述过滤器模块,还用于根据所述授权客户端的授权验证结果处理所述启动请求。

由以上技术方案可知,本申请实施例提供的技术方案,软件内植入有过滤器模块和授权客户端,当软件启动时,过滤器模块拦截软件的启动请求;然后,过滤器模块根据启动请求向软件的授权客户端发送授权验证请求消息;然后,授权客户端在接收到授权验证请求消息的情况下,根据从授权服务端预先获取的许可证文件对软件进行授权验证;最后,过滤器模块根据授权客户端的授权验证结果处理启动请求,由于过滤器模块和授权客户端以软件的功能包的形式植入到用户使用的软件项目中,因此,在对软件进行授权验证的过程中不需要使用网络,因此,能够实现为内网环境中的用户设备提供软件授权验证服务,从而,解决了现有技术中的软件授权方法无法对处于内网环境中的用户设备提供软件授权的问题。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1示出了一种常见的软件运行的网络环境示意图;

图2为本申请实施例示出的一种软件授权方法的流程图;

图3为本申请实施例提供的生成许可证文件的方法的流程图;

图4为本申请实施例提供的生成许可证文件的方法步骤s210的流程图;

图5为本申请实施例提供的生成许可证文件的方法步骤s220的流程图;

图6为本申请实施例提供的一种软件授权方法步骤s130的流程图;

图7为本申请实施例提供的软件到期提醒方法的流程图;

图8为本申请实施例提供的授权服务端进行授权统计的流程图;

图9为本申请实施例示出的一种软件授权系统的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

在对本申请实施例的技术方案进行说明之前,首先结合附图对本申请实施例的应用场景进行说明。

图1示出了一种常见的软件运行的网络环境示意图。从图1可以看出,一些软件的用户出于数据保密的原因,会要求运行软件的设备与公共网络隔离,即处于内网环境中,例如,某公司使用一款软件进行新产品的开发,由于运行该软件的计算机上会保存有大量新产品开发的技术资料,这些技术资料通常是需要保密的,因此该公司会要求运行该软件的计算机与公共网络进行物理隔离,从防止技术资料通过公共网络外泄。

现有技术的软件授权方法,需要计算机与位于公共网络中license服务器建立网络连接,以使license服务器验证用户拥有的许可证是否有效,并根据验证结果许可或禁止用户使用软件。那么,当运行软件的计算机处于内网环境中时,现有技术的软件授权方法就无法实施,从而,会导致软件由于得不到授权而无法正常使用。

为了解决现有技术中的软件授权方法无法为内网环境中的用户设备提供软件的授权的问题,本申请实施例提供了一种软件授权方法及系统。

下面是本申请的方法实施例。

参见图2,为本申请实施例示出的一种软件授权方法的流程图。该方法可以应用于服务器、pc(个人电脑)、平板电脑、手机、虚拟现实设备和智能穿戴设备等多种设备中。

如图2所示,该方法包括以下步骤:

步骤s110,过滤器模块拦截软件的启动请求。

具体地,用户可以通过点击软件的快捷方式图标、点击软件的启动进程图标、在命令行窗口中输入启动软件的指令、点击软件关联格式的文件、语音唤醒、手势唤醒或人脸识别唤醒等方式启动软件。软件在启动时会生成启动请求,该启动请求用于启动软件的登陆进程以显示登陆页面或预设的其他进程。

本申请中,过滤器模块可以通过软件功能包的形式植入到用户使用的软件项目中,过滤器模块在软件生成启动请求时,拦截该启动请求,从而软件不会显示登陆页面。

步骤s120,所述过滤器模块根据所述启动请求向授权客户端发送授权验证请求消息。

其中,授权客户端可以通过软件功能包的形式植入到用户使用的软件项目中,例如,如果授权客户端使用java语言编写,那么授权客户端就是一个植入到软件项目中的jar包。过滤器模块在拦截了软件的启动请求的情况下,向授权客户端发送授权验证请求消息,该授权验证请求消息用于指示授权客户端对软件进行授权验证,具体包括:软件是否在指定的设备上运行、软件名称是否正确、软件运行的模块是否是得到授权的模块、软件是否处在授权有效期内,等等。

步骤s130,所述授权客户端在接收到所述授权验证请求消息的情况下,根据从授权服务端预先获取的许可证文件对所述软件进行授权验证。

本申请中,许可证文件是根据用户提供的用户信息加密得到的。其中,用户信息包括软件所在设备的设备标识、软件名称,以及用户请求授权的软件模块、软件有效期、软件功能的一个或多个。进一步地,设备标识可以包括设备的mac地址、设备的sn(serialnumber)码等可以确定设备的唯一身份的标识信息,本申请实施例中对设备标识不做具体限定。

授权客户端对软件进行许可验证时,需要验证用户运行的软件与许可证文件中的用户信息是否匹配。

例如:

许可证文件中记录的用户信息有:

设备的mac地址(标识信息):12-23-as-we-rt

如果当前运行软件的设备的mac地址为:23-45-df-er-qw,就说明,当前软件没有运行在用户请求授权的设备上,因此,该软件的授权验证不会被通过,用户无法在当前设备上使用该软件。因此,通过验证设备的标识信息,能够保证将许可证文件和设备绑定,使许可证无法在除绑定设备以外的其他设备上使用,防止许可证文件被滥用。

又例如:

许可证文件中记录了用户可以得到授权的软件模块包括数据统计模块、数据比对模块、数据分类模块。那么,如果用户启动的是软件的分析模块,由于分析模块不在许可证文件的授权范围内,分析模块的授权验证不会被通过,用户无法使用软件的分析模块。从而实现了对软件中的各个软件模块的独立授权,因此,用户购买软件时,也可以只购买软件的部分模块,从而降低用户的支出成本。

需要补充说明的是,本申请中,授权客户端以软件的功能包的形式植入到用户使用的软件项目中,因此,在对软件进行授权验证的过程中不需要使用网络,因此,能够实现为内网环境中的用户设备提供软件授权验证服务。

步骤s140,所述过滤器模块根据所述授权客户端的授权验证结果处理所述启动请求。

具体地,如果授权客户端对软件的授权验证通过,那么,过滤器模块就会放行软件的启动请求,软件的登陆进程被准许启动;如果授权客户端对软件的授权验证未通过,过滤器模块就会拒绝软件的启动请求,软件会跳转到错误页面,或跳转到提示用户购买软件授权的页面。

因此,本申请实施例提供了一种软件授权方法,在软件内植入有过滤器模块和授权客户端,当软件启动时,过滤器模块拦截软件的启动请求;然后,过滤器模块根据启动请求向软件的授权客户端发送授权验证请求消息;然后,授权客户端在接收到授权验证请求消息的情况下,根据从授权服务端预先获取的许可证文件对软件进行授权验证;最后,过滤器模块根据授权客户端的授权验证结果处理启动请求,由于过滤器模块和授权客户端以软件的功能包的形式植入到用户使用的软件项目中,因此,在对软件进行授权验证的过程中不需要使用网络,因此,能够实现为内网环境中的用户设备提供软件授权验证服务,从而,解决了现有技术中的软件授权方法无法对处于内网环境中的用户设备提供软件授权的问题。

进一步参见图3,为本申请实施例提供的生成许可证文件的方法的流程图。如图3所示,生成许可证文件的方法包括以下步骤:

步骤s210,授权客户端向授权服务端发送携带用户信息的许可证请求消息。

其中,用户信息包括至少一个信息项,所述信息项至少包括:软件所在设备的设备标识、软件名称、用户请求授权的软件模块、软件有效期、软件功能和软件版本。

示例地,用户希望得到一款软件在3台设备上运行的一年使用权,那么用户信息可以包含这3台设备的设备标识、软件名称和软件有效期。具体地,授权客户端可以为用户提供一个用于引导用户录入用户信息的交互界面,用户可以在交互界面中选择请求授权的软件名称、软件有效期。此外,交互界面中还可通过列表的形式罗列出局域网中所有设备的主机名称,用户可通过勾选主机名称的方式选择其中3台设备作为运行软件的设备,当用户选择设备后,授权客户端可以通过程序指令抓取设备的设备标识。用户录入用户信息之后,授权客户端对用户信息生成表单,并向授权服务端发送携带该表单的许可证请求消息。

进一步地,一些软件包含有多个软件模块或多个软件功能,当用户仅希望使用部分模块和功能时,可以在授权客户端的交互界面中选择请求授权的软件名称,授权客户端会将软件所有的模块和功能以列表的形式罗列出来,用户根据自身的实际需求勾选想要使用的模块和功能即可。此时,用户信息中不仅包括设备标识、软件名称和软件有效期,还包括用户勾选的软件模块和软件功能。

参见图4,为本申请实施例提供的生成许可证文件的方法步骤s210的流程图。如图4所示,在一种可选择的实施方式中,步骤s210可以包括以下步骤:

步骤s211,所述授权客户端获取所述授权服务端分发的第一密钥。

其中,第一密钥预先固化存储在授权服务端和授权客户端中。第一密钥为对称密钥,即加密和解密使用的密钥相同,具体地,可以使用区块加密技术的aes(advancedencryptionstandard,高级加密标准)算法的密钥,例如:密钥长度为256位的:aes-256-cfb(密文反馈:cipherfeedback)、aes-256-gcm(伽罗瓦/计数器模式,galois/countermode)等密钥,以提高加密的安全性。

步骤s212,所述授权客户端使用所述第一密钥对所述用户信息进行加密,生成加密请求文件。

首先,授权客户端根据用户录入的用户信息生成表单。示例地,该表单可以包含以下内容:

<formdevice_id="12-23-as-we-rt"product_id="dinfo_v2.0"time_limit="90_days"product_module="statistics_module,analytics_module"product_function="import,export,backup,parallelprocessing">

</form>

该表单包含了以下信息:

然后,授权客户端使用第一密钥对表单进行加密,得到携带有用户信息的加密字符串,并将加密字符串保存在预设格式的文档中,生成加密请求文件。

步骤s213,所述授权客户端向所述授权服务端发送携带所述加密请求文件的所述许可证请求消息。

例如,授权客户端可以和授权服务端可建立网络连接,当授权客户端需要向授权服务端发送许可证请求消息时,启动授权客户端和授权服务端的网络连接,然后授权客户端根据授权服务端指定的ip地址或域名发送携带所述加密请求文件的许可证请求消息。

步骤s220,授权服务端根据许可证请求消息生成所述许可证文件。

授权服务端接收来自授权客户端的许可证请求消息之后,首先保存许可证请求消息中携带的用户信息,然后,将用户信息进行加密,并存储在特定格式的文件中作为许可证文件。

参见图5,为本申请实施例提供的生成许可证文件的方法步骤s220的流程图。如图5所示,在一种可选择的实施方式中,步骤s220可以包括以下步骤:

步骤s221,所述授权服务端接收所述许可证请求消息。

步骤s222,所述授权服务端使用第一密钥对所述许可证请求消息携带的所述加密请求文件进行解密,以获取所述用户信息。

具体地,授权服务端首先从加密请求文件中读取加密的字符串,然后使用第一密钥从加密的字符串中解密出包含用户信息的表单内容。

步骤s223,所述授权服务端记录所述用户信息,并使用预设非对称密钥的私钥部分对所述用户信息进行加密,生成许可证文件。

其中,非对称密钥由授权服务端生成,包含私钥和公钥。私钥由授权服务端保管,用于对用户信息进行加密,生成许可证文件;公钥由授权服务端分发给授权客户端,用于客户端对许可证文件进行解密。进一步地,本申请可以使用rsa加密演算法密钥,具体可以使用较长位数的rsa密钥,例如,使用1024个二进制位或者2048个二进制位的rsa密钥,以提高加密可靠性。另外,本申请可以在每次生成许可证文件时,使用不同的非对称密钥,从而防止许可证文件被盗用。

步骤s230,授权服务端向所述授权客户端发送携带许可证文件的许可证应答消息。

例如,授权客户端可以和授权服务端可建立网络连接,当授权服务端需要向授权客户端发送许可证应答消息时,启动授权客户端和授权服务端的网络连接,然后授权服务端端根据授权客户端指定的ip地址或域名发送携带许可证文件的许可证应答消息。另外,授权客户端在接收端许可证应答消息并保存了许可证文件之后,可以断开与授权服务端的网络连接,从而,授权客户端根据许可证文件对软件进行授权验证,均在内网环境中进行。

因此,本申请实施例提供的方法,授权客户端只有在请求许可证文件时才需要与授权服务端建立网络链接,授权客户端对软件进行授权验证的过程都在内网环境中实现,从而,能够将运行软件的设备与公共网络实现隔离,保护用户设备的数据安全。并且,本申请实施例的方法,用户可以根据自身需求选择需要得到授权的软件模块或软件功能,从而实现了软件授权的定制化,用户不再需要购买整个软件的授权,从而降低了用户的支出成本,提高用户体验。

参见图6,为本申请实施例提供的一种软件授权方法步骤s130的流程图。如图6所示,在一种可选择的实施方式中,步骤s130可以包括以下步骤:

步骤s131,所述授权客户端使用预设非对称密钥的公钥部分对许可证文件进行解密,以获取所述用户信息。

例如,授权客户端对许可证文件进行解密所使用的非对称密钥的公钥部分可以内置在软件中;或者,由授权服务端使用第一密钥对非对称密钥的公钥部分进行加密后,随许可证应答消息发送给授权客户端,从而,授权客户端可以使用第一密钥解密出非对称密钥的公钥部分。

例如,授权客户端从许可证文件中解密出的用户信息包括:

其中,软件版本“v2.0~v2.x”用户享有“dinfo”软件的同代版本的授权,而不能获得跨版本的授权,例如用户无法使用该许可证文件得到“dinfo”软件的v3.0版本的授权。

步骤s132,所述授权客户端验证所述软件与所述用户信息是否匹配。

例如,授权客户端验证所述软件与用户信息是否匹配,可以包括:

设备标识是否相同,软件名称是否相同,软件版本是否在用户信息限定的范围内,软件有效期是否在用户信息限定的范围内,软件请求启动的产品模块或功能是否在用户信息限定的范围内等。

步骤s1331,如果匹配,则所述授权客户端通知所述过滤器模块放行所述启动请求。

例如,启动软件的登陆进程,加载对应软件模块的图形用户界面,加载当前软件模块下所使用的插件、控件,检查软件的格式关联情况等。

步骤s1332,如果不匹配,则所述授权客户端通知所述过滤器模块拒绝所述启动请求。

例如,软件会跳转到错误页面,或跳转到提示用户购买软件授权的页面。

示例地,软件的错误页面可以包括:您未取得软件授权,请联系经销商或代理商。

示例地,提示用户购买软件授权的页面:您未取得软件授权,如需取得授权,请点击以下链接:购买授权

参见图7,为本申请实施例提供的软件到期提醒方法的流程图。如图7所示,在一种可选择的实施方式中,软件到期提醒方法可以包括以下步骤:

步骤s310,所述授权客户端在所述启动请求被放行的情况下,根据所述用户信息定期检测所述软件的剩余有效期。

例如,授权客户端可以利用心跳检测机制定时(例如:每天或每小时)检测软件的剩余有效期。

具体地,如果用户在2018年11月1日00时00分00秒取得软件授权,并且授权有效期为30天,那么,该软件授权会在2018年12月1日00时00分00秒失效,授权客户端在每一次触发心跳检测机制时,读取系统的当前时间,并与软件的失效时间进行比较,从而,得到软件的剩余有效期。示例地,如果系统的当前时间为2018年11月28日00时00分00秒,则软件的剩余有效期为3天0小时0分0秒。

步骤s320,所述授权客户端检测如果所述软件的所述剩余有效期低于预设提示期限,则通知所述软件显示到期提醒消息。

例如,可以在用户启动软件时通过弹窗显示到期提醒消息;或者,将到期提醒消息显示在软件的图形用户界面的指定位置;或者,在软件运行时,定期通过弹出消息框的方式显示到期提醒消息。

进一步地,可根据则软件的剩余有效期设置到期提醒消息的频率。例如,预设提示期限为3天,当剩余有效期为两天时,可设置每隔3小时显示一次到期提醒消息,当剩余有效期为一天时,可设置每个1小时显示一次到期提醒消息。

因此,本申请实施例提供的技术方案,通过在软件的有效期低于预设提示期限时,向用户显示到期提醒消息,从而提醒用户做出续期等处理,提高用户使用体验。

参见图8,为本申请实施例提供的授权服务端进行授权统计的流程图。如图8所示,在一种可选择的实施方式中,授权服务端进行授权统计可以包括以下步骤:

步骤s410,所述授权服务端在接收到所述许可证请求消息的情况下,为所述许可证请求消息生成工单。

其中,所述工单记录所述授权服务端对所述许可证请求消息的处理进度。例如,授权服务端可以为软件的管理方(开发方、销售方、代理方等)提供“我的申请”“我的待办”“我的产品”“我的已办”等分栏,其中,“我的申请”用于根据用户信息向管理端申请许可证文件,“我的待办”用于列出未处理的许可证请求消息,“我的产品”用于管理可提供授权的软件产品,“我的已办”用于列出已处理的许可证请求消息。

步骤s420,所述授权服务端根据所述工单统计软件的授权分布状况。

其中,所述授权分布状况包括用户列表和每款软件授权的用户数量。

步骤s430,根据所述授权分布状况生成展示图表。

通过可视化的展示图标,软件的管理方能够了解自己的软件有哪些用户在使用,以及,哪些软件使用的用户较多,哪些软件使用的用户较少等,从而为软件管理者指定软件的营销策略或软件的开发策略提供参考。

下面是本申请的装置实施例,可用于执行本申请的方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

参见图9,为本申请实施例示出的一种软件授权系统的结构示意图,该系统可以应用于服务器、pc(个人电脑)、平板电脑、手机、虚拟现实设备和智能穿戴设备等多种设备中。

参见图9所示,该系统可以包括:

授权服务端510、过滤器模块520和授权客户端530。

所述授权服务端510,用于生成许可证文件;

所述过滤器模块520,用于拦截软件的启动请求;以及,根据所述启动请求向所述授权客户端530发送授权验证请求消息;

所述授权客户端530,用于在接收到所述授权验证请求消息的情况下,根据所述许可证文件对所述软件进行授权验证;

所述过滤器模块520,还用于根据所述授权客户端530的授权验证结果处理所述启动请求。

因此,本申请实施例提供了一种软件授权系统,在软件内植入有过滤器模块和授权客户端,当软件启动时,过滤器模块拦截软件的启动请求;然后,过滤器模块根据启动请求向软件的授权客户端发送授权验证请求消息;然后,授权客户端在接收到授权验证请求消息的情况下,根据从授权服务端预先获取的许可证文件对软件进行授权验证;最后,过滤器模块根据授权客户端的授权验证结果处理启动请求,由于过滤器模块和授权客户端以软件的功能包的形式植入到用户使用的软件项目中,因此,在对软件进行授权验证的过程中不需要使用网络,因此,能够实现为内网环境中的用户设备提供软件授权验证服务,从而,解决了现有技术中的软件授权方法无法对处于内网环境中的用户设备提供软件授权的问题。

本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1