一种鉴权方法及其装置、设备和存储介质与流程

文档序号:16469554发布日期:2019-01-02 22:59阅读:137来源:国知局
一种鉴权方法及其装置、设备和存储介质与流程

本发明涉及平台服务技术领域,尤其涉及一种鉴权方法及其装置、设备和存储介质。



背景技术:

随着移动终端的发展,人们对移动终端中的应用的要求也越来越高。各个应用为丰富自身的功能,则会接入第三方的软件开发工具包(softwaredevelopmentkit,sdk)来满足需求。sdk一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

为防止sdk被盗用,通常需要使用鉴权系统对使用sdk的客户端进行鉴权。现有的鉴权系统通常是通过在线方式对调用sdk的应用进行鉴权,即发送鉴权信息到服务器,由服务器通过鉴权判定该应用是否合法。然而,在线鉴权的方式需要客户端与服务器进行多次网络交互,其鉴权过程比较耗时,鉴权响应也不够及时;另外,在线鉴权的方式受限于网络状况的好坏而存在不确定性,在网络状况不好或无网络连接时,鉴权无法正常进行。



技术实现要素:

有鉴于此,本发明实施例期望提供一种鉴权方法及其装置、设备和存储介质。

本发明实施例的技术方案是这样实现的:

本发明实施例提供一种鉴权方法,所述方法包括:

当获取到应用调用sdk的调用指令时,获取所述sdk的证书和所述sdk的激活码;

如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk。

在本发明实施例中,所述获取所述sdk的证书和所述sdk的激活码,包括:

从本地获取所述sdk的证书和从本地获取所述sdk的激活码。

在本发明实施例中,如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk,包括:

基于所述证书,如果验证所述激活码满足调用条件,允许所述应用调用所述sdk。

在本发明实施例中,所述证书中包括有效期,所述激活码中包括激活码的生成时间,或者,所述证书中包括有效期之外还包括以下信息中的至少一项:允许条用的应用标识和和允许调用的应用所运行的平台信息,相应地,所述激活码中包括激活码的生成时间之外还包括以下信息中的至少一项:所述应用的标识和所述应用所运行的平台信息;

相应地,基于所述证书,如果验证所述激活码满足调用条件,允许所述应用调用所述sdk,包括:

如果所述激活码的生成时间在所述有效期内,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,如果所述应用的标识包含于所述允许调用的应用的标识中,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,并且,如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,并且如果所述应用的标识包含于所述允许调用的应用的标识中,并且如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,允许所述应用调用所述sdk。

在本发明实施例中,所述方法还包括:

基于所述证书,如果验证所述激活码不满足调用条件,通过预设的生成函数和所述证书生成所述激活码;

如果所述激活码生成成功,允许所述应用调用所述sdk。

在本发明实施例中,所述获取所述sdk的证书和所述sdk的激活码,还包括:

从本地获取所述sdk的证书;

如果本地没有存储有所述sdk的激活码,通过预设的生成函数和所述证书生成所述激活码。

在本发明实施例中,所述如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk,包括:

如果通过所述生成函数和所述证书成功生成所述激活码,允许所述应用调用所述sdk。

在本发明实施例中,所述方法还包括:

获取所述应用的标识信息、所述应用所运行的平台信息和系统时间信息;

基于所述应用的标识信息、所述应用所运行的平台信息和系统时间信息,验证所述证书是否满足生成条件;

如果所述证书满足生成条件,通过调用的生成函数和所述证书成功生成所述激活码;

将所述激活码存储至本地。

在本发明实施例中,所述方法还包括:

如果所述证书不满足所述生成条件,禁止所述应用调用所述sdk。

在本发明实施例中,所述方法还包括:

当获取到所述调用指令时,如果是所述应用在启动时或启动后第一次调用所述sdk,获取所述sdk的证书和所述sdk的激活码。

在本发明实施例中,所述方法还包括:

当获取到所述调用指令时,如果不是所述应用在启动时且不是所述应用启动后第一次调用所述sdk,允许所述应用调用所述sdk。

在本发明实施例中,所述方法还包括:

将携带有所述sdk的证书的验证请求消息发送给服务器;

如果接收到服务器发送的表征验证通过的验证响应消息,允许所述应用调用所述sdk。

本发明实施例提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现本发明其他实施例所提供的鉴权方法中的步骤。

本发明实施例提供一种鉴权装置,所述装置包括:第一获取模块和第一允许调用模块,其中:

所述第一获取模块,用于当获取到应用调用sdk的调用指令时,获取所述sdk的证书和所述sdk的激活码;

所述第一允许调用模块,用于如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk。

在本发明实施例中,所述第一获取模块包括:

第一获取单元,用于从本地获取所述sdk的证书和从本地获取所述sdk的激活码。

在本发明实施例中,所述第一允许调用模块包括:

第一允许调用单元,用于基于所述证书,如果验证所述激活码满足调用条件,允许所述应用调用所述sdk。

在本发明实施例中,所述证书中包括有效期,所述激活码中包括激活码的生成时间,或者,所述证书中包括有效期之外还包括以下信息中的至少一项:允许条用的应用标识和和允许调用的应用所运行的平台信息,相应地,所述激活码中包括激活码的生成时间之外还包括以下信息中的至少一项:所述应用的标识和所述应用所运行的平台信息;

相应地,所述第一允许调用单元还用于:

如果所述激活码的生成时间在所述有效期内,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,如果所述应用的标识包含于所述允许调用的应用的标识中,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,并且,如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,并且如果所述应用的标识包含于所述允许调用的应用的标识中,并且如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,允许所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

生成模块,用于基于所述证书,如果验证所述激活码不满足调用条件,通过预设的生成函数和所述证书生成所述激活码;

第三允许调用模块,用于如果所述激活码生成成功,允许所述应用调用所述sdk。

在本发明实施例中,所述第一获取模块还包括:

第二获取单元,用于从本地获取所述sdk的证书;

生成单元,用于如果本地没有存储有所述sdk的激活码,通过预设的生成函数和所述证书生成所述激活码。

在本发明实施例中,所述第一允许调用模块包括:

第二允许调用单元,用于如果通过所述生成函数和所述证书成功生成所述激活码,允许所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

第二获取模块,用于基于所述证书中的限制信息获取系统时间和所述应用的属性信息;

验证模块,用于基于所述系统时间信息和应用的属性信息,验证所述证书是否满足生成条件;

成功生成模块,用于如果所述证书满足生成条件,通过调用的生成函数和所述证书成功生成所述激活码;

存储模块,用于将所述激活码存储至本地。

在本发明实施例中,所述装置还包括:

禁止调用模块,用于如果所述证书不满足所述生成条件,禁止所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

第三获取模块,用于当获取到所述调用指令时,如果是所述应用在启动时或启动后第一次调用所述sdk,获取所述sdk的证书和所述sdk的激活码。

在本发明实施例中,所述装置还包括:

第二允许调用模块,用于当获取到所述调用指令时,如果不是所述应用在启动时且不是所述应用启动后第一次调用所述sdk,允许所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

发送模块,用于将携带有所述sdk的证书的验证请求消息发送给服务器;

第四允许调用模块,用于如果接收到服务器发送的表征验证通过的验证响应消息,允许所述应用调用所述sdk。

本发明实施例提供一种鉴权设备,所述设备至少包括:存储器、通信总线和处理器,其中:

所述存储器,用于存储鉴权程序;

所述通信总线,用于实现处理器和存储器之间的连接通信;

所述处理器,用于执行存储器中存储的鉴权程序,以实现如上所述的鉴权方法的步骤:

本发明实施例提供一种存储介质,所述存储介质上存储有鉴权程序,所述鉴权程序被处理器执行时实现如上所述的鉴权方法的步骤。

本发明实施例提供一种鉴权方法及其装置、设备和存储介质,其中,首先获取到应用调用sdk的调用指令时,获取所述sdk的证书和所述sdk的激活码;然后如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk;如此,能够在不联网的情况下对调用sdk的应用进行鉴权,不仅提高了鉴权效率,并且减少了后台服务器和带宽成本压力。

附图说明

图1为本发明实施例鉴权方法的实现流程示意图;

图2为本发明实施例鉴权方法的实现流程示意图;

图3为本发明实施例卸载应用时输出提示信息的界面示意图;

图4为本发明实施例鉴权设备输出提示信息的界面示意图;

图5为本发明实施例鉴权方法的实现流程示意图;

图6为本发明实施例鉴权装置的组成结构示意图;

图7为本发明实施例鉴权设备的组成结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

本实施例提供一种鉴权方法,图1为本发明实施例鉴权方法的实现流程示意图,如图1所示,所述方法包括以下步骤:

步骤s101,当获取到应用调用sdk的调用指令时,获取所述sdk的证书和所述sdk的激活码。

这里,所述步骤s101可以是由鉴权设备实现的,所述鉴权设备可以是智能终端,例如可以是移动电话(手机)、平板电脑、笔记本电脑等具有无线通信能力的移动终端设备,还可以是台式计算机、桌面电脑等不便移动的智能终端设备。

在本实施例中,所述调用指令中携带有所述sdk的标识,基于所述sdk的标识可以从所述鉴权设备本地获取到所述sdk的证书。

而获取所述sdk的激活码,可以有两种实现方式:

一、如果本地存储有已经生成的激活码,则从本地获取激活码;

二、如果本地没有存储有激活码,根据所述证书生成激活码。

步骤s102,如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk。

这里,所述步骤s102可以是由鉴权设备实现的。

在所述步骤s102之前,所述方法还包括:判断所述证书和所述激活码是否满足调用条件,其中,如果所述证书和所述激活码满足所述调用条件,则允许应用调用所述sdk;如果所述证书和所述激活码不满足所述调用条件,则禁止所述应用调用所述sdk。

对应于获取激活码的两种实现方式,判断所述证书和所述激活码是否满足调用条件也有两种实现方式:

一、如果本地存储有激活码,那么在判断所述证书和所述激活码是否满足调用条件时,需要基于证书验证所述激活码中的内容是否满足一定的条件,例如,激活码的生成时间是否在证书中限定的有效期内,激活码中应用标识是否包含在证书中限定的允许调用的应用标识中,等等。

二、如果本地没有存储有激活码,那么在判断所述证书和所述激活码是否满足调用条件时,需要基于所述证书是否能成功生成激活码,如果能成功生成激活码,则说明所述证书和所述激活码满足所述调用条件,此时表明鉴权通过,允许所述应用调用所述sdk;如果不能成功生成所述激活码,则说明所述证书和所述激活码不满足所述调用条件,此时表明鉴权不通过,禁止所述应用调用所述sdk。

在本发明实施例提供的鉴权方法中,首先获取到应用调用sdk的调用指令时,获取所述sdk的证书和所述sdk的激活码;然后如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk;如此,能够在不联网的情况下对调用sdk的应用进行鉴权,不仅提高了鉴权效率,并且减少了后台服务器和带宽成本压力。

在其他实施例中,在鉴权设备获取到所述sdk的证书后,还可以通过以下步骤进行鉴权:

步骤41,鉴权设备将携带有所述sdk的证书的验证请求消息发送给服务器。

步骤42,所述服务器接收到验证请求消息后,获取所述sdk的证书。

步骤43,所述服务器对所述sdk的证书进行验证,得到验证结果。

这里,所述服务器对所述sdk的证书进行验证时,可以是验证所述应用调用所述sdk的次数是否超过预设的调用阈值,还可以验证请求调用所述sdk的应用的标识是否包含在允许调用的应用的标识中,还可以验证请求调用所述sdk的应用所运行的平台信息是否包含在允许调用的应用所运行的平台信息中。所述验证结果至少包括验证通过或验证不通过,当验证结果包括验证不通过时,所述验证结果中还可以包括验证不通过的原因。

步骤44,所述服务器将携带有所述验证结果的验证响应消息发送给鉴权设备。

步骤45,所述鉴权设备判断是否接收到验证通过的验证响应消息。

这里,所述鉴权设备接收到验证响应消息后,解析所述验证响应消息,以获取验证结果,以判断是否接收到表征验证通过的验证响应消息,如果接收到表征验证通过的验证响应消息,进入步骤46;如果没有接收到表征验证通过的验证响应消息,进入步骤47。

步骤46,所述鉴权设备允许所述应用调用所述sdk。

步骤47,所述鉴权设备禁止所述应用调用所述sdk。

基于上述的实施例,本发明实施例再提供一种鉴权方法,图2为本发明实施例鉴权方法的实现流程示意图,如图2所示,所述方法包括以下步骤:

步骤s201,鉴权设备获取应用调用sdk的调用指令。

这里,由于一个应用能实现多个功能,为实现多个功能需要调用多个sdk,因此,所述调用指令中至少携带有所述sdk的标识,所述sdk的标识可以是sdk的文件名。应用在启动过程中或者在启动后的运行过程中,需要使用某一sdk对应的功能时,需要调用该sdk。

步骤s202,所述鉴权设备判断是否为所述应用在本次启动时或启动后第一次调用所述sdk。

这里,如果是所述应用在本次启动时或启动后第一次调用所述sdk,则需要进行鉴权,此时进入步骤s203;如果不是所述应用在本次启动时或启动后第一次调用所述sdk,也即在本次启动应用后,已经调用过所述sdk,也就是说所述应用已经通过了鉴权,因此在本次启动应用后,再调用sdk时不需要再进行鉴权,此时进入步骤s208;而如果在应用启动后关闭,再一次启动时或启动后第一次调用所述sdk还需要进行鉴权,也即此时进入步骤s203。

需要说明的是,所述应用在本次启动时或启动后第一次调用所述sdk,是指所述应用在接收到启动指令之后,启动的过程中第一次调用sdk,或者在启动过程中并没有调用sdk,在启动之后第一次调用所述sdk。

步骤s203,所述鉴权设备从本地获取所述sdk的证书。

这里,所述证书可以是所述sdk的开发人员在为应用提供所述sdk时,提供给所述应用的。所述证书可以存储在由购买所述sdk的客户指定的存储路径。因此,步骤s203在实现的过程中,可以是根据所述证书的存储路径从本地获取所述sdk的证书。

所述证书中包括以下信息中至少一项:有效期、允许调用的应用的标识和允许调用的应用所运行的平台信息,其中,有效期是所述证书中必须包含的限制信息,另外,所述证书中还可以包括允许调用的应用的设备标识、允许调用的应用的设备的硬件信息等限制信息。其中,允许调用的应用的标识可以包括应用的包名、版本信息,还可以包括应用的包名的消息摘要算法(md)值、应用签名(signatures)的md值。

步骤s204,所述鉴权设备判断本地是否存储有所述sdk的激活码。

这里,如果本地存储有所述sdk的激活码,进入步骤s205;如果本地没有存储有所述激活码,进入步骤s206。

在本实施例中,所述激活码包括以下信息中的至少一项:激活码的生成时间、所述应用的标识和所述应用所运行的平台信息。需要说明的是,激活码中包括的信息与生成激活码时使用的证书中包括的信息是对应的,例如,生成激活码时使用的证书中仅仅包括有限期,那么激活码中的信息也就相应地只包括激活码的生成时间;如果生成激活码时使用的证书中包括有效期和允许调用的应用的标识,那么激活码中的信息也相应的包括激活码的生成时间,以及所述应用的标识。

步骤s205,所述鉴权设备基于所述证书,验证所述激活码是否满足调用条件。

这里,基于所述证书,如果验证所述激活码满足调用条件,说明鉴权通过,此时进入步骤s208;基于所述证书,如果验证所述激活码不满足调用条件,说明鉴权未通过,此时进入步骤s206。

在本实施例中,如果所述证书中只包括有效期这一限制信息,那么,所述步骤s205可以通过以下步骤实现:所述鉴权设备验证所述激活码的生成时间是否在所述有效期内,例如激活码的生成时间为2018年5月22日,所述证书中的有效期为2018年5月1日至2018年5月31日,那么说明所述激活码的生成时间在所述有效期内,此时进入步骤s208。

如果所述证书中除了包括有效期这一限制信息,还包括允许调用的应用的标识、允许调用的应用所运行的平台信息,那么所述步骤s205可以通过以下步骤实现:

所述鉴权设备验证所述激活码的生成时间是否在所述有效期内;并且,

所述鉴权设备验证所述应用的标识是否包含于所述允许调用的应用的标识中;和/或,

所述鉴权设备验证所述应用所运行的平台信息是否包含于允许调用的应用所运行的平台信息。

相应地,如果所述激活码的生成时间在所述有效期内;并且,如果所述应用的标识包含于所述允许调用的应用的标识中;和/或,如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,说明基于所述证书,验证所述激活码满足调用条件,此时进入步骤s208。

假设所述证书中包含的有效期为2018年5月1日至2018年5月31日,允许调用的应用的标识为:应用a、应用b和应用c,允许调用的应用的平台信息为:安卓、windows,那么,运行在安卓平台下的应用a在5月22日调用sdk时,是可以通过鉴权的;而运行在ios平台下的应用b在5月22日调用sdk时是不能通过鉴权的。

在其他实施例中,基于所述证书,验证所述激活码是否满足调用条件,可以通过调用预设的验证函数,基于所述证书验证所述激活码是否满足调用条件。

步骤s206,所述鉴权设备通过预设的生成函数和所述证书生成所述激活码。

这里,所述步骤s206在实现的过程中,首先要基于证书中的包括的限制信息获取相应的系统时间和应用的属性信息,然后通过获取到的系统时间和所述应用的属性信息验证所述证书是否满足生成条件,如果所述证书满足所述生成条件,则表明可以成功生成激活码;如果所述证书不满足所述生成条件,则表明不能成功生成激活码。

所述步骤s206可以有两种实现方式:

一、将获取到的系统时间、所述应用的属性信息和所述证书直接作为所述生成函数的输入,由所述生成函数完成上述验证所述证书是否满足所述生成条件,以及在所述证书满足所述生成条件的时候,根据所述证书生成对应的激活码;

二、将获取到的系统时间、所述应用的属性信息和所述证书作为预设的校验函数的输入,由所述校验函数对所述证书是否满足生成条件,如果所述证书满足所述生成条件时,才由生成函数根据所述证书生成对应的激活码;如果所述证书不满足所述生成条件时,直接返回生成激活码失败。

需要说明的是,获取的信息是与证书中包括的限制信息对应的,例如,证书中的限制信息只包括有效期,那么就只需要相应的获取系统时间;如果证书中的限制信息包括有效期、允许调用的应用的标识,那么就需要相应的获取系统时间和所述应用的标识。

步骤s207,所述鉴权设备判断是否成功生成所述激活码。

这里,如果所述鉴权设备成功生成所述激活码,说明通过鉴权,此时进入步骤s208;如果所述鉴权设备不能成功生成所述激活码,说明未通过鉴权,此时进入步骤s209。

步骤s208,所述鉴权设备允许所述应用调用所述sdk。

步骤s209,所述鉴权设备禁止所述应用调用所述sdk。

在本发明实施例提供的鉴权方法中,首先,鉴权设备获取应用调用sdk的调用指令,如果是所述应用在本次启动时或启动后第一次调用所述sdk,从本地获取所述sdk的证书,如果本地存储有所述sdk的激活码;基于所述证书验证所述激活码是否满足调用条件,如果所述激活码满足调用条件,允许所述应用调用所述sdk;如果本地没有存储有激活码,基于所述证书生成激活码,如果成功生成所述激活码,允许所述应用调用所述sdk;如果没有成功生成所述激活码,禁止所述应用调用所述sdk,如此,不需要联网即可通过本地存储的证书和激活码对调用sdk的应用进行鉴权,不仅能够提高鉴权效率,还能控制sdk的分发。

在其他实施例中,如果成功生成所述激活码,所述鉴权设备会将所述激活码进行存储,而存储路径是根据sdk指定的,如果所述应用不卸载或者不进行重装,则所述激活码不会被删除,而如果所述应用被卸载或者进行了重装,则所述激活码会被删除。在实现过程中,当用户要卸载一个应用的时候,鉴权设备可以对该应用使用的sdk中证书的有限期进行统计,确定出距离当前日期最短的有效期的终止日期,并输出提示信息,提示用户卸载后,如果在该终止日期之前不进行重装,将不能再安装使用该应用。

假设用户于2018年5月22日要卸载该应用,而该应用使用的3个sdk中限制了使用有效期,其中,sdk1的有限期的终止日期为2018年8月1日,sdk2的有效期的终止日期为2018年7月15日,sdk3的有效期的终止日期为2019年1月1日,也就是说,如果用户想要继续安装该应用,需要在2018年7月15前再安装,图3为本发明实施例卸载应用时输出提示信息的界面示意图,如图3所示,在用户卸载之前会输出提示信息301,提示用户卸载后如果在2018年7月15日之前不再安装该应用,将不能正常安装该应用。如果用户点击“卸载”的按钮控件,则卸载该应用,如果用户点击“取消”的按钮控件,则不卸载该应用。

在其他实施例中,鉴权设备还可以记录保存卸载后的应用能够正常安装使用的最后期限,也即距离当前时间最短的有效期的终止日期,并在该终止日期之前一天,一周或者十天输出提示信息。承接上述举例,假设在最后期限也即2018年7月15日之前一周和之前一天会分别输出提示信息,图4为本发明实施例鉴权设备输出提示信息的界面示意图,如图4所示,在2018年7月8日鉴权设备会输出系统提示消息401,提示用户应用a将于7月15日之后不能正常安装使用,是否需要进行下载安装,如果用户点击“是”按钮控件402,则通过软件商店或网页下载应用a,如果用户点击“否”,则不进行任何操作。

本发明实施例再提供一种鉴权方法,图5为本发明实施例鉴权方法的实现流程示意图,如图5所示,所述鉴权方法可以通过以下步骤实现:

步骤s501,读取证书文件内容;

步骤s502,获取本地保存的激活码;

步骤s503,判断是否获取成功;

这里,如果获取成功,说明本地保存有激活码,进入步骤s505;如果没有获取成功,说明本地没有保存有激活码,进入步骤s504。

步骤s504,根据证书生成一个激活码,然后进入步骤s507。

步骤s505,直接调用checkactivecode*函数根据证书文件检查激活码是否能通过验证。

这里,如果所述激活码能通过验证,说明检查成功,也就说明通过鉴权,进入步骤s509;如果检查失败,则进入步骤s506。

步骤s506,重新根据证书生成一个激活码;

步骤s507,判断激活码是否生成成功。

这里,如果生成成功,进入步骤s508;如果生成失败,进入步骤s510。

步骤s508,将新的激活码保存至本地。

步骤s509,返回成功,允许应用使用该sdk。

步骤s510,返回失败,禁止所述应用使用该sdk。

在本发明实施例提供的鉴权方法中,是在应用使用sdk的时候需要先鉴权后使用。其中,在本实施例中,首先会限制使用该sdk的有效期,该有效期也可以称之为授权的时间范围,如果在该sdk的授权的时间范围内,购买过该sdk的应用可以不受限制的使用该sdk。而如果超出该sdk的授权时间范围的话,如果该应用在授权时间范围内已经安装使用过该sdk,且该应用没有被卸载或被重装,那么该应用还可以继续使用该sdk;而如果该应用在授权时间范围内没有安装使用过该sdk,或者在授权时间范围之外该应用被卸载或重装,那么,超出了授权时间范围,该应用就无法安装使用该sdk了。

需要说明的是,安装使用sdk可以认为是调用sdk,或者是使用sdk对应的功能。

利用本实施例提供的鉴权方法,能够用于控制sdk的分发和对客户的限制,客户想购买某一sdk的话,可以采用包年、包月等方式,也就是说有一个时间限制,在其他实施例中还可以对应用的包名进行限制,对包名进行限制,就能限制能够使用该sdk的应用,也即,若a公司以包年(假设2018年5月1日至2019年4月30日)的形式购买了该sdk,并将该sdk用于a公司开发的应用b中,而该sdk限制了只能用于应用b中,那么如果a公司开发的应用c是不能使用该sdk的。

如果应用b在2018年5月1日至2019年4月30日这一时间范围内调用过该sdk,在2019年4月30日之前应用b没有被卸载重装过,那么在被卸载重装之前,应用b可以不受限制的调用该sdk,而如果应用b在2019年5月22日被卸载重装后,那么应用b便不能再调用该sdk了,而a公司如果想继续在应用b中使用该sdk的功能,需要从该sdk的开发人员处获取新的证书(license),利用新的证书再对应用进行鉴权,实现过程如下:

在获取到证书之后,首先调用一个函数,通过这个函数并结合该证书文件,生成一个激活码,如果成功生成激活码,会把这个激活码保存在本地,并允许应用b调用该sdk。而之后再启动应用b时,需要去检查(check)本地保存的激活码,然后该激活码能够通过检查,则允许应用b调用该sdk。

也就是说,就是在应用b第一次调用sdk的过程中需要先生成激活码,然后再去检查激活码,而当本地存储有该激活码时,应用b在后续的调用过程中就不需要再去生成激活码了,直接去检查本地储存的激活码就可以了,只要该激活码能够通过检查,应用b就可以调用该sdk。

在其他实施例中,除了限制时间和包名之外,还可以限制应用运行的平台,例如,限制只能运行在安卓平台上的应用b使用,或者限制只能运行在windows平台下的应用b使用。另外,还可以限制次数,例如可以限制应用b调用一万次。

本发明实施例提供的鉴权方法为一种离线鉴权方式,证书文件是存储在鉴权设备本地的,如果本地存储有激活码,则验证激活码是否满足条件即可,不需要联网;如果本地没有存储有激活码,同样也不需要联网即可通过证书文件生成激活码,只要激活码满足条件就可以使用sdk,如此,不仅能提高鉴权效率,还能够避免占用鉴权设备的网络带宽,从而提高鉴权设备的处理效率。

这里,对证书包含的内容及各字段进行说明。

一、基本信息

1、产品:要签发的产品名称;

2、签发对象:目标客户名称;

3、父证书:选择上级证书;

此处显示为"#{证书uuid前7位}--#{证书描述(description)}"的形式;

4、签发类型:

i、选择“再分配(redistribute)”,签发中间证书,不能直接用于sdk验证,用于生成下级中间证书或叶子证书;

ii、选择“叶子(leaf)”,签发叶子证书,用于sdk验证。

需要说明的是,不支持从根证书签发叶子证书交给客户,需要先建立中间证书。

5、中间证书-允许签发中间证书:用于多级证书。

需要说明的是,不能使用该类型的中间证书签发用于直接交付的叶子证书。

6、中间证书-在线验证:若中间证书勾选了该功能,则由应用程序编程接口(applicationprogramminginterface,api)自动签发的叶子证书也包含该功能。

7、叶子证书-验证方式:

i、无:无特殊验证

ii、在线验证:勾选该功能则sdk使用时必须联网,需由服务器验证通过后才可使用。

在线验证方式目前预期场景为用户量不大的可控测试场景,由于该功能会将客户流量导流至sdk对应的服务器,因此不能直接向客户交付用于生产环境的此类证书。

iii、在线激活:首次使用时需联网,配合sdk_protectorv3.7以上版本使用;

iv、离线激活:该功能的为纯离线功能,sdk在时限内首次加载时获取激活码,后续加载时传入激活码则不验证时间限制。

8、限制个数:

i、中间证书:用于限制该中间证书可签发的子证书数量,留空为不限。该字段不会被写入证书内容,可后期修改。当高并发时,签发的子证书数量有可能略微大于中间证书限制个数。

ii、叶子证书:只适用于“在线激活”版本的叶子证书,用于限制不重复的uuid数量,留空为不限。

二、“绑定模型秘钥”使用方式需要参考模型加密授权方案。

三、自定义字段-性能(capability):该部分的自定义字段值类型为布尔类型(boolean),勾选为真(true),未勾选则为假(false)。

四、限制(limit):

1、通用唯一识别码(universallyuniqueidentifier,uuid):唯一设备标识,用于绑定设备的使用环境,需外层自行控制uuid获取策略。

2、有效期:必填,必须在父证书的有效期限内,在内部(internal)sdk内核对;勾选“到期邮件提醒”后,会在过期时间一周前起收到提醒邮件。

3、应用标识(application,identification,appid):接受字符串,在internalsdk内核对。

4、版本(version):选填,有效的sdk版本限制,需外层传入internalsdk内核对,有效期左闭右开。

5、平台(platform):选填,有效的系统平台,在internalsdk内核对

6、硬件鉴权&硬件鉴权密钥(hardwareauth&hardwareauthkey):加密芯片相关字段。

7、自定义字段-limit:类型为整型(integer),未填写则不会将该字段添加至证书。

8、自定义字段-限制字符串(limitstring,limitstr):类型为字符串(string),未填写则不会将该字段添加至证书。

五、自定义字段-计数器(counter):类型为integer,未填写则不会将该字段添加至证书。

六、description:证书的详细描述,帮助外部查找该证书。

本发明实施例提供一种鉴权装置,图6为本发明实施例鉴权装置的组成结构示意图,如图6所示,所述装置600包括:第一获取模块601和第一允许调用模块602,其中:

所述第一获取模块601,用于当获取到应用调用sdk的调用指令时,获取所述sdk的证书和所述sdk的激活码;

所述第一允许调用模块602,用于如果所述证书和所述激活码满足调用条件,允许所述应用调用所述sdk。

在本发明实施例中,所述第一获取模块601包括:

第一获取单元,用于从本地获取所述sdk的证书和从本地获取所述sdk的激活码。

在本发明实施例中,所述第一允许调用模块602包括:

第一允许调用单元,用于基于所述证书,如果验证所述激活码满足调用条件,允许所述应用调用所述sdk。

在本实施例中,所述证书中包括有效期,所述激活码中包括激活码的生成时间,或者,所述证书中包括有效期之外还包括以下信息中的至少一项:允许条用的应用标识和和允许调用的应用所运行的平台信息,相应地,所述激活码中包括激活码的生成时间之外还包括以下信息中的至少一项:所述应用的标识和所述应用所运行的平台信息;

相应地,所述第一允许调用单元还用于:

如果所述激活码的生成时间在所述有效期内,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,如果所述应用的标识包含于所述允许调用的应用的标识中,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,并且,如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,允许所述应用调用所述sdk;或者,

如果所述激活码的生成时间在所述有效期内,并且如果所述应用的标识包含于所述允许调用的应用的标识中,并且如果所述应用所运行的平台信息包含于允许调用的应用所运行的平台信息,允许所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

生成模块,用于基于所述证书,如果验证所述激活码不满足调用条件,通过预设的生成函数和所述证书生成所述激活码;

第三允许调用模块,用于如果所述激活码生成成功,允许所述应用调用所述sdk。

在本发明实施例中,所述第一获取模块还包括:

第二获取单元,用于从本地获取所述sdk的证书;

生成单元,用于如果本地没有存储有所述sdk的激活码,通过预设的生成函数和所述证书生成所述激活码。

在本发明实施例中,所述第一允许调用模块包括:

第二允许调用单元,用于如果通过所述生成函数和所述证书成功生成所述激活码,允许所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

第二获取模块,用于基于所述证书中的限制信息获取系统时间和所述应用的属性信息;

验证模块,用于基于所述系统时间信息和应用的属性信息,验证所述证书是否满足生成条件;

成功生成模块,用于如果所述证书满足生成条件,通过调用的生成函数和所述证书成功生成所述激活码;

存储模块,用于将所述激活码存储至本地。

在本发明实施例中,所述装置还包括:

禁止调用模块,用于如果所述证书不满足所述生成条件,禁止所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

第三获取模块,用于当获取到所述调用指令时,如果是所述应用在启动时或启动后第一次调用所述sdk,获取所述sdk的证书和所述sdk的激活码。

在本发明实施例中,所述装置还包括:

第二允许调用模块,用于当获取到所述调用指令时,如果不是所述应用在启动时且不是所述应用启动后第一次调用所述sdk,允许所述应用调用所述sdk。

在本发明实施例中,所述装置还包括:

发送模块,用于将携带有所述sdk的证书的验证请求消息发送给服务器;

第四允许调用模块,用于如果接收到服务器发送的表征验证通过的验证响应消息,允许所述应用调用所述sdk。

需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。

需要说明的是,如果以软件功能模块的形式实现上述的鉴权方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。

相应地,本发明实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现本发明实施例提供的鉴权方法中的步骤。

相应地,本发明实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,所述该计算机可执行指令被处理器执行时实现上述实施例提供的鉴权方法的步骤。

相应地,本发明实施例提供一种鉴权设备,图7为本发明实施例鉴权设备的组成结构示意图,如图7所示,所述设备700包括:一个处理器701、至少一个通信总线702、用户接口703、至少一个外部通信接口704和存储器705。其中,通信总线702配置为实现这些组件之间的连接通信。其中,用户接口703可以包括显示屏,外部通信接口704可以包括标准的有线接口和无线接口。其中所述处理器701,配置为执行存储器中存储的鉴权程序,以实现上述实施例提供的鉴权方法的步骤。

以上鉴权设备和计算机存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明计算机程序产品、鉴权设备和计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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