掌桥专利:专业的专利平台
掌桥专利
首页

一种支持在离线场景的软件鉴权方法、系统及存储介质

文献发布时间:2023-06-19 13:45:04


一种支持在离线场景的软件鉴权方法、系统及存储介质

技术领域

本发明涉及软件安全技术领域,特别是涉及一种支持在离线场景的软件鉴权方法、系统及存储介质。

背景技术

为了保护软件开发者的权益,对软件进行鉴权是一种常见和必要的措施。在现有技术中,有些软件采用了离线鉴权,但是采用离线鉴权时服务端对客户端的行为一无所知,且可控程度低(如无法推送升级),保护力度也相对较弱。在现有技术中许多软件采用了在线鉴权,在线鉴权通过之后才允许客户端设备正常使用。在线鉴权的可控性强,但也引入了另外一个问题,由于客户端所处网络环境的不可控、服务器宕机等因素,经常出现断网或无法连接服务器的情况,导致软件无法通过鉴权,因而无法正常使用,并由此导致软件使用者无法正常营业使用,给使用者造成经济损失。此外服务器端也可能因为各种异常导致停服,同样会引起上述问题。如何针对上述这些问题进行优化设计,在充分保障软件系统开发商合法权益的同时,最大化地提升软件系统的可用性,减少故障时间,提高客户满意度,就成为了一个亟待解决的问题。

发明内容

为此,需要提供一种支持在离线场景的软件鉴权方法用于解决现有技术中软件离线鉴权可控性低以及在线鉴权受网络质量影响的技术问题。

为实现上述目的,发明人提供了一种支持在离线场景的软件鉴权方法,包括步骤:

软件运行端连接服务器并发起在线鉴权请求;

若在线鉴权通过,则所述服务器产生并返回离线鉴权数据文件;

若无法进行在线鉴权,则所述软件运行端采用最近一次在线鉴权所返回的离线鉴权数据进行离线鉴权。

进一步的,所述离线鉴权数据文件为加密数据文件;

若在线鉴权通过,所述服务器还产生并返回API接口文件,所述API接口文件用于在所述软件运行端进行离线鉴权时访问所述离线鉴权数据文件。

进一步的,所述API接口文件具有自校验机制;

所述软件运行端进行离线鉴权时,所述API接口文件进行自校验,并在所述自校验通过后访问所述离线鉴权数据文件。

进一步的,所述离线鉴权数据文件包括:所述软件运行端的身份识别ID、离线鉴权策略数据和时间戳;

所述离线鉴权包括:

验证所述离线鉴权策略数据的合法性;

根据所述时间戳判断所述软件运行端的系统时间是否合法;

根据所述离线鉴权策略数据进行鉴权,以及在鉴权通过后更新所述时间戳。

进一步的,所述离线鉴权策略数据中离线鉴权策略包括以下的任意一项或多项:是否允许软件运行端离线鉴权、允许离线鉴权的最大时长、允许离线鉴权的最大次数。

进一步的,所述验证所述离线鉴权策略数据的合法性包括以下的任意一项或多项:判断离线鉴权数据文件格式的正确性、判断离线鉴权数据是否适用于本软件运行端、判断离线鉴权数据是否被修改。

进一步的,所述在线鉴权包括:所述软件运行端向所述服务器发送身份ID,所述服务器根据所述身份ID对所述软件运行端进行鉴权。

为解决上述技术问题,本发明还提供了另一技术方案:

一种支持在离线场景的软件鉴权系统,包括:软件运行端和服务器;

所述服务器用于对所述软件运行端进行在线鉴权,以及在在线鉴权通过后产生并返回离线鉴权数据文件;

所述软件运行端用于连接所述服务器并发起在线鉴权请求,以及在无法连接所述服务器时采用最近一次在线鉴权所返回的离线鉴权数据进行离线鉴权。

进一步的,所述服务器用于执行以上任一技术方案所述服务器所对应的操作;所述软件运行端用于执行以上任一技术方案所述软件运行端所对应的操作。为解决上述技术问题,本发明还提供了另一技术方案:

一种计算机存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上任一项技术方案所述的支持在离线场景的软件鉴权方法。

区别于现有技术,上述技术方案采用了在线鉴权与离线鉴权结合的方式进行软件鉴权,预先尝试连接服务器进行在线鉴权,并在在线鉴权通过后产生并向软件运行端下发离线鉴权数据文件,若软件运行端无法连接服务器进行在线鉴权,则会读取本地存储的此前在线鉴权所返回的离线鉴权数据进行离线鉴权。因此在整个鉴权过程中通过在线鉴权与离线鉴权相结合,可提高软件鉴权可控性,同时也降低了对网络环境的依赖,该软件鉴权方法可以适应更多的应用场景,在面对网络故障时可以有更高的可用性,同时最大化保障了软件系统产商和软件使用者的权益。

附图说明

图1为具体实施方式所述支持在离线场景的软件鉴权方法的流程图;

图2为具体实施方式所述软件在线鉴权步骤的流程图;

图3为具体实施方式所述离线鉴权数据的合法性验证的流程图;

图4为具体实施方式所述软件离线鉴权步骤的流程图;

图5为具体实施方式所述支持在离线场景的软件鉴权系统的示意图;

图6为具体实施方式所述计算机存储介质的示意图;

附图标记说明:

50、支持在离线场景的软件鉴权系统;

60、计算机存储介质;

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1,本实施例公开了一种支持在离线场景的软件鉴权方法。该支持在离线场景的软件鉴权方法结合了在线软件鉴权和离线软件鉴权,其优选采用在线软件鉴权,并在异常情况下允许使用离线鉴权数据文件进行离线鉴权,从而保证软件鉴权的可控性和稳定性,既有效的保护了软件提供者的权益,又能避免软件使用者因异常情况无法鉴权导致的损失。如图1所示,该支持在离线场景的软件鉴权方法包括步骤:

S101、软件运行端连接服务器并发起在线鉴权请求;

S102、若在线鉴权通过,则所述服务器产生并返回离线鉴权数据文件;

S103、若无法进行在线鉴权,则所述软件运行端采用最近一次在线鉴权所返回的离线鉴权数据进行离线鉴权。

在步骤S101之前包括步骤:软件运行端启动软件,其中该软件可以是由人工进行启动,也可以是由软件定时进行启动。在软件启动后执行上述步骤S101至步骤S103的软件鉴权步骤,并在鉴权通过后才可以正常使用该软件。

在步骤S101中述软件运行端向所述服务器发送身份ID,所述服务器根据所述身份ID对所述软件运行端进行鉴权,并返回鉴权结果。所述身份ID为软件运行端的唯一身份识别ID,因此每一台软件运行端的身份ID均是唯一的,该唯一的身份ID用于标识于软件运行端(即客户端)环境的唯一性。该身份ID可以但不局限于使用诸如硬件ID序列号、加密狗序列号、网卡MAC地址以及根据硬件环境生成的软件序列号等等。合法软件运行端的身份ID在软件注册时预存于服务器中,因此服务器根据软件运行端上传的身份ID,即可对其进行鉴权。在步骤S101中线鉴权成功,软件运行端本次将直接使用服务器提供的鉴权结果进行后续操作,所获取的离线鉴权数据及对应的接口文件本次并不使用,只为了将来可能发生的离线场景做预备处理。

如图2所示,在一实施方式中,软件在线鉴权步骤包括:

S205、管理人员预先配置离线鉴权策略,离线鉴权策略用于在步骤S203中产生所述离线鉴权数据。

S201、软件运行端携带唯一身份识别ID向服务器发起在线鉴权请求;

S202、服务器根据身份识别ID进行鉴权;

S203、服务器验证成功后,生成唯一有限期的离线鉴权数据文件;

S204、服务器返回鉴权结果、离线鉴权数据文件、离线鉴权数据操作API接口文件;

在步骤S102中如果步骤S101在线鉴权成功,服务器除了返回鉴权结果,还将为该软件运行端生成唯一且有限期的离线鉴权数据文件,该离线鉴权数据文件用于异常时应急使用,即用于步骤S103中离线鉴权使用。

在步骤S103中若S101在线鉴权无法连接服务器或其他异常情况导致无法进行在线鉴权,则软件运行端从本地读取离线鉴权数据文件进行离线鉴权,在离线鉴权通过后即可正常运行该软件,否则无法正常运行该软件。该离线鉴权数据是由在此之前成功在线鉴权时产生并返回的离线鉴权数据文件,并且服务器验证成功后生成的每个离线鉴权数据文件都是唯一的,不同软件运行端的离线鉴权数据是无法通用的,离线鉴权都具有使用次数限制或使用时间限制,超过使用时间或使用次数则无法继续使用。

在该支持在离线场景的软件鉴权方法中,步骤S102中在线鉴权成功后产生并返回的离线鉴权数据文件和API接口文件,可以供该软件运行端在之后在线鉴权异常时用于应急离线鉴权,同时由服务器端开发并下放离线数据操作API接口文件,提高了对离线鉴权数据文件访问的安全性,可避免离线鉴权数据文件被恶意访问或篡改。在该支持在离线场景的软件鉴权方法整个鉴权过程中,通过在线鉴权与离线鉴权相结合,可提高软件鉴权可控性,同时也降低了对网络环境的依赖,该软件鉴权方法可以适应更多的应用场景,在面对网络故障时可以有更高的可用性,同时最大化保障了软件系统产商和软件使用者的权益。

在一些实施方式中,上述在线鉴权步骤并非仅单次执行,软件运行端应定时向服务器发启在线鉴权,使离线鉴权数据中的各项数值在每次在线鉴权成功后得到及时更新。

为了保证离线鉴权数据文件的安全性,服务产生的所述离线鉴权数据文件为加密数据文件,并且为了访问该离线鉴权数据文件,服务器还将返回该鉴权数据文件的操作API接口文件,即所述API接口文件用于在所述软件运行端进行离线鉴权时访问所述离线鉴权数据文件;软件运行端将离线鉴权数据文件和API接口文件获取到本地并保存,供离线鉴权时使用。

API接口文件是一个二进制文件,通常可以以*.dll,*.so或其他任何形式文件存在,该API接口文件由服务器开发,用以对离线鉴权数据文件进行读写。其中的具体操作接口名称采用提前约定的方式,集成在软件运行端应用系统中。如getClientID(获取客户端唯一识别ID),getLastModifiedTime(获取最后更新时间戳),deductOfflineTime(扣减离线时长)等等。而具体的接口代码实现,可以在服务器根据需要随时进行调整或变更,实现灵活控制。为了安全,该API接口文件通常集成自校验机制,所述软件运行端进行离线鉴权时,所述API接口文件进行自校验,并在所述自校验通过后访问所述离线鉴权数据文件,从而避免被恶意篡改,所述自校验机制可以为加壳处理等。

在步骤S102中,所述离线鉴权数据文件是加密数据文件,用以存储软件运行端应用系统离线鉴权时所需要的各项数据。离线鉴权数据文件包括:所述软件运行端的身份识别ID、离线鉴权策略数据和时间戳;所述时间戳为该离线鉴权数据文件最后更新的时间戳。

在离线数据文件中的软件运行端的身份识别ID,是为了软件运行端在进行离线鉴权前,先进行软件运行端合法性的判断,以避免其它环境的离线鉴权数据拷贝到本地设备使用。当鉴权数据文件中的该身份识别ID和实际运行环境下的身份识别ID相同时,才认为身份合法。

离线鉴权策略数据可以由服务器端管理人员进行预设。离线鉴权策略数据通常包括但不局限于以下几项数据:是否允许软件运行端离线鉴权,软件运行端允许离线鉴权的最大时长(整形值,通常可精确到秒),软件运行端允许离线鉴权最大次数等。

在离线鉴权时软件运行端先判断其是否可以进行离线鉴权,只有软件运行端系统上存在离线鉴权数据文件及对应的操作API接口文件,该软件运行端才可以进行离线鉴权。如果软件运行端的从未连接服务器端在线鉴权成功过(并返回离线鉴权数据文件),或者离线鉴权数据文件被删除,都将无法进行离线授权。

所述离线鉴权策略数据中离线鉴权策略包括以下的任意一项或多项:是否允许软件运行端离线鉴权、允许离线鉴权的最大时长、允许离线鉴权的最大次数。在一实施方式中,所述离线鉴权步骤包括:

验证所述离线鉴权策略数据的合法性;

根据所述时间戳判断所述软件运行端的系统时间是否合法;

根据所述离线鉴权策略数据进行鉴权,以及在鉴权通过后更新所述时间戳。

验证所述离线鉴权策略数据的合法性,可最大程度保障软件系统开发商的权益,避免各种不符合预期的场景绕开限制违规使用离线鉴权方案。通常情况下,所述验证所述离线鉴权策略数据的合法性包括以下的任意一项或多项:判断离线鉴权数据文件格式的正确性、判断离线鉴权数据是否适用于本软件运行端、判断离线鉴权数据是否被修改。

如图3所示,验证所述离线鉴权策略数据的合法性包括以下几个子步骤:

S301、判断离线鉴权数据文件格式的正确性;

S302、判断离线鉴权数据是否适用于本设备;

S303、判断离线鉴权数据是否被替换或回滚。

这些判断都将通过调用服务器提供的离线API接口文件进行。

在步骤S301中,可通过调用API接口文件判断离线鉴权数据文件的文件格式是否合法。通常离线鉴权数据文件设计为加密数据文件,通过对离线鉴权数据文件的文件格式的检测及数据解密成功与否,可判断该离线鉴权数据文件是否可以使用,检测失败将直接返回离线鉴权失败,成功则将进入下一步。

在步骤S101在线鉴权环节,生成该离线鉴权数据文件的时候,离线鉴权数据文件中已包含了鉴权通过时的客户端唯一身份识别ID。因此在步骤S302中判断离线鉴权数据是否适用于本设备时,通过API接口文件,判断该身份识别ID和当前实际运行环境的身份识别ID是否一致,即可判断当前离线鉴权数据文件是否适用于本设备。验证失败将直接返回离线鉴权失败,成功则将进入下一步。

在步骤S303中,为了避免恶意将历史离线鉴权数据覆盖回来进行非法离线鉴权,设计通过调用API接口文件进行离线鉴权数据是否被替换或回滚验证。由于在离线鉴权数据文件中保留了每次操作的系统时间戳,所以如果当前运行环境下的实际系统时间戳早于离线鉴权数据文件中的最后更新时间戳,说明当前运行环境下的实际系统错误或被恶意回调,或离线鉴权数据文件被替换,这种情况将直接返回离线鉴权失败。

通过图3所示的离线鉴权策略数据的合法性验证可剔除非法的离线鉴权,在另一些对于安全性要求高的系统,可考虑将服务器返回的离线鉴权数据保存于加密狗或加密芯片之类的安全硬件设备上,每次读取的系统时间戳也可以以这类硬件中自带的时钟为准,进一步降低被篡改的可能性。

上述步骤“根据所述时间戳判断所述软件运行端的系统时间是否合法”的具体操作是通过调用API接口文件,读取离线鉴权数据中的离线鉴权策略数据(由服务器端设定),并进行判断。如:读取该软件运行端被允许离线鉴权的最大时长数据,当发现允许离线鉴权的最大时长数据已经归零后,说明已经离线太长时间,这时候将返回离线鉴权失败,提示必须进行在线鉴权。因此有效地避免了客户端长期有意不联网鉴权的问题。

当离线鉴权成功后,系统会扣减本次已经离线时长/次数以及更新最后操作时间为时间戳。经过上面的各种鉴权和判断,已经可以做出离线鉴权成功的判断了。此时,需要调用API接口从离线数据文件中的允许离线鉴权的策略数据中扣减本次已耗用时长。并且调用API接口更新离线鉴权数据中的最后操作时间戳。

如图4所示,为一具体实施方式所述软件离线鉴权步骤的流程图;该软件离线鉴权包括步骤:

S401、判断本地是否存在离线鉴权数据文件及对应的API接口文件;若没有,则转步骤S407、离线鉴权失败;

S402、调用API接口判断离线鉴权数据文件的合法性;若离线鉴权数据文件不合法,则转步骤S407、离线鉴权失败;

S403、调用API接口判断是否离线鉴权超过最大时间或次数;若是,则转步骤S407、离线鉴权失败;

S404、调用API接口扣减离线数据文件中的可用时长和/或次数减1;

S405、调用API接口更新离线数据文件中的时间戳;

S406、离线鉴权成功;

如图5所示,在另一实施方式中提供了一种支持在离线场景的软件鉴权系统50。该支持在离线场景的软件鉴权系统50包括:软件运行端和服务器;该软件运行端和服务器为上述实施方式中的软件运行端和服务器。

所述服务器用于对所述软件运行端进行在线鉴权,以及在在线鉴权通过后产生并返回离线鉴权数据文件;

所述软件运行端用于连接所述服务器并发起在线鉴权请求,以及在无法连接所述服务器时采用最近一次在线鉴权所返回的离线鉴权数据进行离线鉴权。

进一步的,所述离线鉴权数据文件为加密数据文件;

所述服务器还用于在在线鉴权通过生并返回API接口文件,所述API接口文件用于在所述软件运行端进行离线鉴权时访问所述离线鉴权数据文件。

进一步的,上述服务器还用于执行以上任一实施方式中所述服务器所对应的操作;所述软件运行端用于执行以上任一实施方式中所述软件运行端所对应的操作。

如图6所示,在另一实施方式提供了一种计算机存储介质60,计算机存储介质60上存储有计算机程序,所述程序被处理器执行时实现如以上任一项实施方式所述的支持在离线场景的软件鉴权方法。

上述支持在离线场景的软件鉴权系统50和计算机存储介质60通过在线鉴权与离线鉴权相结合,可提高软件鉴权可控性,同时也降低了对网络环境的依赖,该支持在离线场景的软件鉴权方法可以适应更多的应用场景,在面对网络故障时可以有更高的可用性,同时最大化保障了软件系统产商和软件使用者的权益。

需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

技术分类

06120113792435