API调用的安全认证方法、装置、系统与流程

文档序号:12376635阅读:409来源:国知局
API调用的安全认证方法、装置、系统与流程

本申请涉及安全调用API的技术,尤其涉及API调用的安全认证方法、装置、系统。



背景技术:

目前互联网软件产品从产品受众主要划分为两大类,包括面向终端消费者的大众类互联网产品,例如新浪微博Web端、知乎Web端等。这类产品的特点在于使用该类产品的对象是人类,大部分提供的媒体内容为无结构化的文本(例如小说、博客)、图片、音视频等。另一类产品面向的受众是计算机,即服务主要形式为提供编程接口的API(Application Programming Interface,应用程序接口),方便程序员利用该API进行二次开发。这类产品的特点在于服务的对象为计算机,提供的媒体内容大部分为结构化的文本,例如XML、JSON等。

针对API型产品,目前对于安全认证常见的做法是采用通过用户账户和密码等鉴权信息每次提交每次认证的方式。针对终端消费者型的产品,通常是用户使用客户端浏览器进入服务器主页后,服务器在首次对用户认证通过后,为该用户创建一个Session,并向用户颁发Session ID,客户端浏览器通过cookie或者URL记录该Session ID,在下次提交请求内容会携带该Session ID信息,服务器收到Session ID,如果Session ID在服务器的Session ID存储列表里便认为该用户为合法用户。

由于目前对于API型产品的认证方式,每次认证均需要调用用户中心来进行认证,因此当网络调用抖动等意外因素发生时极有可能导致服务端调用 用户中心出现间歇性不稳定情况,最终影响到用户调用不稳定。而对于终端消费者型的产品,由于依赖于cookie来存储Session ID,因此存在伪造攻击的安全漏洞,并且当恶意用户通过嗅探网络协议包并破解了HTTP有关cookie或者Session ID的值后,便可伪装为合法用户向服务器端进行交互。



技术实现要素:

本申请提供API调用的安全认证方法、装置、系统,在保证安全性前提下,提升对客户端的身份验证效率,并减少用户中心的负担。

根据本申请实施例的第一方面,提供一种API调用的安全认证方法,运行于服务器端,该方法包括步骤:

当收到客户端的API请求后,如果所述API请求中携带有令牌,则校验所述API请求中的令牌是否有效;如果所述API请求中未携带令牌或所述API请求中的令牌为无效令牌,则将所述API请求中的鉴权信息提交给用户中心进行身份验证;在所述用户中心身份验证通过后,将计算获得的令牌发送给所述客户端;所述API请求中的令牌和所述计算获得的令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数。

本申请通过向客户端发放令牌,用令牌来对客户端的身份进行验证。在计算令牌时,根据预先约定的参数通过不可逆算法获得加密的随机数作为令牌,这样算出来的随机数是具有唯一值的随机数,服务器在每次收到客户端的API请求后,均再次校验令牌是否有效,以保证令牌的安全性。由于不需要频繁访问用户中心来对客户端的身份进行验证,因此在保证安全性同时也减小服务器对用户中心的请求次数,减少了用户中心的负担,同时减小了时延、加速了登录验证,也避免了由于整体环境的波动等不确定因素引起的瞬间服务端请求用户中心调用失败,从而提升了系统性能和稳定性。

根据本申请实施例的第二方面,提供一种API调用的安全认证方法,运行于客户端,该方法包括步骤:

当接收到服务器的令牌时,将所述令牌存储;所述令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

当构造API请求时,将所述令牌及鉴权信息携带在所述API请求;

将所述API请求发送给服务器。

本申请的客户端在收到服务器的令牌后,将令牌存储,并在API请求中携带令牌返回给服务器,从而使服务器可以对API中所携带的令牌的有效性进行验证,以便不需要频繁访问用户中心来对客户端的身份进行验证,实现在保证安全性同时也减小服务器对用户中心的请求次数,减少了用户中心的负担。

根据本申请实施例的第三方面,提供一种API调用的安全认证装置,位于服务器端,包括:

第一通信模块,用于接收客户端的API请求;

处理模块,用于在所述API请求中携带有令牌时,校验所述API请求中的令牌是否有效;在所述API请求中未携带令牌或所述API请求中的令牌为无效令牌时,将所述API请求中的鉴权信息提交给用户中心进行身份验证;在所述用户中心身份验证通过后,将计算获得的令牌发送给第二通信模块;所述API请求中的令牌和所述计算获得的令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

第二通信模块,用于向所述客户端发送所述计算获得的令牌。

本申请通过向客户端发放令牌,用令牌来对客户端的身份进行验证。在计算令牌时,根据预先约定的参数通过不可逆算法获得加密的随机数作为令牌,这样算出来的随机数是具有唯一值的随机数,服务器在每次收到客户端的API请求后,均再次校验令牌是否有效,以保证令牌的安全性。由于不需要频繁访问用户中心来对客户端的身份进行验证,因此在保证安全性同时也减小服务器对用户中心的请求次数,减少了用户中心的负担,同时减小了时延、加速了登录验证,也避免了由于整体环境的波动等不确定因素引起的瞬间服务端请求用户中心调用失败,从而提升了系统性能和稳定性。

根据本申请实施例的第四方面,提供一种API调用的安全认证装置,运行于客户端,包括:

存储模块,用于当接收到服务器的令牌时,将所述令牌存储;所述令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

消息构造模块,用于当构造API请求时,将所述令牌及鉴权信息携带在所述API请求;

通信模块,用于接收服务器的所述令牌,并发给所述存储模块,以及将所述API请求发送给服务器。

本申请的客户端在收到服务器的令牌后,将令牌存储,并在API请求中携带令牌返回给服务器,从而使服务器可以对API中所携带的令牌的有效性进行验证,以便不需要频繁访问用户中心来对客户端的身份进行验证,实现在保证安全性同时也减小服务器对用户中心的请求次数,减少了用户中心的负担。

根据本申请实施例的第五方面,提供一种API调用的安全认证系统,包括服务器、用户中心,

所述服务器,用于当收到客户端的API请求后,如果所述API请求中携带有令牌,则校验所述API请求中的令牌是否有效;如果所述API请求中未携带令牌或所述API请求中的令牌为无效令牌,则将所述API请求中的鉴权信息提交给用户中心进行身份验证;在所述用户中心身份验证通过后,将计算获得的令牌发送给所述客户端;所述API请求中的令牌和所述计算获得的令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

所述用户中心,用于根据所述服务器发送的所述鉴权信息对所述客户端进行身份验证,以及将身份验证的结果通知所述服务器。

本申请通过向客户端发放令牌,用令牌来对客户端的身份进行验证。在计算令牌时,根据预先约定的参数通过不可逆算法获得加密的随机数作为令牌,这样算出来的随机数是具有唯一值的随机数,客户端在收到服务器的令牌后,将令牌存储,并在API请求中携带令牌返回给服务器,服务器在每次 收到客户端的API请求后,均再次校验令牌是否有效,以保证令牌的安全性。由于不需要频繁访问用户中心来对客户端的身份进行验证,因此在保证安全性同时也减小服务器对用户中心的请求次数,减少了用户中心的负担,同时减小了时延、加速了登录验证,也避免了由于整体环境的波动等不确定因素引起的瞬间服务端请求用户中心调用失败,从而提升了系统性能和稳定性。

附图说明

图1为本申请实施例中一种网络环境图;

图2为本申请实施例中服务器侧调用API的安全认证方法的流程图;

图3为本申请实施例中客户端侧调用API的安全认证方法的流程图;

图4为本申请一个应用实例中调用API的安全认证方法的时序图;

图5为本申请实施例中调用API的安全认证装置的硬件架构图;

图6为本申请一个实施例中API的安全认证装置的软件逻辑框图;

图7为本申请一个实施例中API的安全认证装置的软件逻辑框图;

图8为本申请一个实施例中API的安全认证系统的软件逻辑框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项 目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本申请所提供的API调用的安全认证方法适用于客户端和服务器交互过程是无状态交互的API系统,一个典型的应用环境是REST(Representational State Transfer,表征性状态传输)风格的API系统,简称REST-API系统。REST通常基于使用HTTP等目前广泛流行的连接协议,HTTP连接是无状态的(也就是不记录每个连接的信息),而是在REST传输中包含应用的所有状态信息。

图1是本申请所适用的一种较常见的网络环境。如图所示,网络100通常可以包括能够将网络节点耦合到一起的任意类型的有线或无线通信信道。这包括但不限于,局域网、广域网、网络的组合或支持两个或多个计算系统之间的通信的其他网络。在本申请的一种实施方式中,网络100包括因特网。

网络100中所包含的设备包括请求调用API的客户端101、作为API的提供方的服务器102,用户中心103,用户中心103具备根据鉴权信息对客户端进行身份认证的能力,并保存有客户端101所对应的各种标识信息,例如用户账号、密码、用户编号等。

图2提供了本申请的实施例的流程图,其中示出了服务器102在调用API的过程中的安全认证流程。

S201,接收客户端的API请求;

S202,如果API请求中携带有令牌,则校验API请求中的令牌是否有效;如果API请求中未携带令牌或API请求中的令牌为无效令牌,则将API 请求中的鉴权信息提交给用户中心进行身份验证;在用户中心身份验证通过后,计算获得新的令牌,将计算获得的令牌发送给客户端;API请求中携带的令牌和计算所获得的令牌均为根据预先约定的参数通过不可逆算法获得的加密的随机数。

在本申请中,当客户端101首次登录服务器102时,由于此时服务器102尚未向客户端101发放令牌,因此,需要使用客户端101的鉴权信息向用户中心103进行身份验证;用户中心103验证通过后,服务器102会通过计算生成令牌并发放给客户端101,之后,客户端101与服务器102交互时携带此令牌,服务器102每次对这个令牌进行校验,来确认客户端101的来源,如果API请求中的令牌无效,则再次通过客户端的鉴权信息向用户中心103进行身份认证,认证通过后会重新向客户端发放令牌。

本申请通过向客户端101发放令牌,用令牌来对客户端的身份进行验证,如果令牌有效,则认为该客户端的身份合法。在计算令牌时,根据预先约定的参数通过不可逆算法获得加密的随机数作为令牌,这样算出来的随机数是具有唯一值的随机数,服务器在每次收到客户端的API请求后,均再次校验令牌是否有效,以保证令牌的安全性。由于不需要频繁访问用户中心来对客户端的身份进行验证,因此在保证安全性同时也减小服务器102对用户中心103的请求次数,提升了系统性能和稳定性。

在一个实施例中,服务器102校验API请求中的令牌是否有效的途径可以是根据令牌的索引信息获得预先约定的参数,根据预先约定的参数通过不可逆算法计算当前令牌,判断当前令牌与所收到的API请求中的令牌是否相同,如果相同,则判断该API请求中携带的令牌有效,如果API请求中携带的令牌有效,则认为该客户端身份验证通过,进行后续的交互过程,例如,将客户端请求的API接口的相关数据发送给客户端;如果不相同,则判断API请求中携带的令牌无效。

服务器102在将计算后获得的令牌发送给客户端101时,可以将令牌的索引信息发给客户端,以便客户端携带此令牌的索引信息连同计算获得的令 牌一起返回给服务器102,作为一个实施例,可以将索引信息与计算获得的令牌携带在同一条消息中发送给客户端,也可以将索引信息和计算获得的令牌作为两条不同的消息发送给客户端。索引信息用来找到计算与该客户端的令牌相关的预先预定的参数,可以看做是区分不同令牌的唯一标识。例如,可以是在计算令牌时,生成一个唯一性的字符串;或者可以是用户中心103在对客户端101认证通过后返回的一个身份标识(例如,客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号等等)。

为了能够计算出具有唯一值,且可重现的随机数作为令牌,需要预先约定好相关的参数以及算法,在发放令牌时和校验令牌有效性时使用相同的参数及算法来计算令牌。

作为一个例子,预先预定好的参数可以包括与客户端唯一性有关的参数,例如,可以是至少一种身份标识,身份标识可以包括客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号等。

为了能够更好地防止恶意用户通过尝试猜测到预先约定的参数的具体值以获得令牌,预先约定的参数还包括加密秘钥,可以将一个随机数作为加密秘钥并保存在服务器上。

作为一个例子,可以通过哈希算法作为不可逆算法,例如公式1的例子所描述的情形:

Token=Hash(MAC,UID,KEY) (公式1)

公式1中Token为需要计算的令牌,在公式1中预先约定的参数为客户端的MAC地址、用户编码UID、加密秘钥KEY。

在一个例子中,令牌可以附加在HTTP协议头中传输,为了更好的防止令牌被盗用的风险,预先约定的参数还可以包括有效期验证参数,在生成令牌时将有效期验证参数也作为不可逆算法的输入参数,例如公式2所描述的实例:

Token=Hash(MAC,UID,SEED,KEY) (公式2)

公式2中Token为需要计算的令牌,在公式2中预先约定的参数为客户 端的MAC地址、用户编码UID、加密秘钥KEY、有效期验证参数SEED。SEED是一个跟Token调用生命周期相关的值,如果以时间作为SEED,那么可以选择在固定的时间后该Token失效,如果以调用次数作为SEED,那么可以选择在固定次数之后该Token失效,容易理解,有效期验证参数的实现方式不局限于所列举的几种方式。

在计算获得令牌后,向客户端发送该令牌时,可以将有效期验证参数一并发送至客户端;客户端返回API请求时在HTTP的协议头中携带此有效期验证参数,服务器端获取有效期验证参数后,将验证当前的令牌是否过期,例如SEED时间戳已经和当前时间间隔大于失效时间,或者SEED调用次数大于固定次数,那么可以视作令牌已经失效。如果校验API请求中的令牌已经失效,那么重新向用户中心认证鉴权,并为客户端再次颁发新令牌;如果未过期,则根据预先约定的参数计算当前令牌,判断当前令牌与API请求中的令牌是否相同,如果相同,则API请求中的令牌有效,如果不相同,则API请求中的令牌无效。

图3提供了本申请的实施例的流程图,其中示出了客户端101在调用API的过程中的安全认证流程。

S301,当接收到服务器的令牌时,将令牌存储;

在一个实施例中,客户端在首次向服务器发送调用API的请求时,可以将鉴权信息发送给服务器,鉴权信息是用来向用户中心进行鉴权所需要的信息,对于不同的设计方案,鉴权信息的内容可以不同,较常见的可以是用户账户、密码等信息。服务器根据客户端的鉴权信息向用户中心请求认证该客户端的身份,如果认证不通过,则服务器将通知客户端身份认证失败,如果用户中心对客户端认证通过,则服务器将根据预先约定的参数生成令牌返回给客户端。作为一个例子,在客户端收到服务器返回的令牌后,可以将令牌存储在当前的进程空间中。另外,还可以将令牌所对应的索引信息进行存储。令牌的索引信息既可以是一个具有唯一性的随机数,也可以是身份标识,例如客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号等 信息。令牌所对应的索引信息可以是通过服务器发送过来,也可以是与服务器预先约定好的信息,例如,如果将用户账号作为索引信息,则可以在用户登录时将用户账号进行保存。

在另一个实施例中,如果客户端发给服务器的令牌为无效令牌,则服务器再次根据客户端的鉴权信息向用户中心请求认证该客户端的身份,如果认证不通过,则服务器将通知客户端身份认证失败,如果用户中心对客户端认证通过,则服务器再次将根据预先约定的参数生成新的令牌返回给客户端,客户端用新的令牌更新已保存的令牌。

S302,当构造API请求时,将令牌及鉴权信息携带在API请求中;

从S301可以看出,API请求中依据不同的实施例,可能携带的信息可以包括令牌、索引信息、用户账户、密码等。

S303,将API请求发送给服务器。

由于令牌是经过加密的不可逆随机数,因此被截获后无法获取到令牌中的具体值,为了保证索引信息、用户账号、密码等敏感信息不被恶意截获,可以使用安全通信信道进行发送。例如,可以使用URL来调用API,并且请求可以通过HTTPS会话、作为HTTP“GET(得到)”消息来发送。

在一个例子中,客户端与服务器需要事先约定计算令牌的参数,对于服务器无法获得的参数,可以通过客户端收集后在API请求中发送给服务器,例如,一些诸如MAC地址的身份标识,可以在客户端收集后,通过API请求发送给服务器。

图4示出了具体的应用场景下本申请实施例的API调用的安全认证方法。

假设用户希望使用某“天气预报”的客户端提供的天气预报服务,用户为了使用该服务,需要通过“天气预报”客户端向“天气预报”服务器身份认证,“天气预报”服务器认证用户身份合法后,才会开放API接口允许“天气预报”的客户端读取天气预报的相关数据自己储存在“天气预报”服务器上的照片。因此“天气预报”客户端需要得到用户授权后,“天气预 报”服务器才会同意“天气预报”客户端读取这些照片。在本应用实例中,客户端101为“天气预报”客户端,服务器102为“天气预报”服务器。在本应用实例中,计算令牌所需要的预先约定的参数包括客户端的IP地址、用户编号UID、加密秘钥KEY、有效期验证参数SEED。

S401,用户打开“天气预报”客户端以后,输入用户账户和密码,并要求“天气预报”客户端向“天气预报”服务器获取天气预报数据;

S402,“天气预报”客户端将用户的用户账号及密码携带在API请求中,通过HTTPS安全通道发送给“天气预报”服务器;此时令牌和UID为空;

S403,由于令牌值为空,因此“天气预报”服务器通过令牌验证身份失败,于是向用户中心请求认证该用户的身份;

S404,用户中心认证后,返回认证结果。如果用户中心的认证未能通过,将直接报错,并返回错误信息。如果认证通过并将该用户的用户编码一起返回给“天气预报”服务器;

S405,“天气预报”服务器根据API请求中携带的IP地址、以及用户中心返回的UID,按照以下公式计算出令牌;

Token=Hash(IP,UID,KEY,SEED)

S406,“天气预报”服务器将Token及UID、SEED一并发送给“天气预报”客户端,并向“天气预报”客户端开放API接口;

S407,“天气预报”客户端在后续对“天气预报”服务器的访问过程中,每个API请求都会携带Token及UID、SEED及鉴权信息发送给“天气预报”服务器;SEED携带在HTTP的消息头中;

S408,“天气预报”服务器判断SEED是否已过期,如果过期,则根据根据鉴权信息访问用户中心进行认证;如果没过期,则执行S409;

S409,根据UID读出所存储的KEY、IP地址,连同UID、SEED作为输入参数再次计算Token的值,如果与“天气预报”客户端所发送的Token值相同,则允许“天气预报”客户端访问相关的天气预报数据(S410);如果未 通过,则再次根据鉴权信息访问用户中心进行认证,按照S411执行认证过程(图中未示出);

S411,用户中心认证后,返回认证结果。如果用户中心的认证未能通过,将直接报错,并返回错误信息。如果认证通过并将该用户的用户编码一起返回给天气预报服务器;天气预报服务器再次计算Token值,并将新获得的Token值发送给“天气预报”客户端。

与前述API调用的安全认证的方法的实施例相对应,本申请还提供了API调用的安全认证的装置的实施例。

本申请API调用的安全认证的装置的实施例可以应用在服务器或客户端上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在服务器或客户端的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请API调用的安全认证的装置所在客户端或服务器的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的客户端或服务器通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图6,API调用的安全认证装置600的软件逻辑框图如图所示,位于服务器端,包括:

第一通信模块601,用于接收客户端的API请求;

处理模块602,用于在所述API请求中携带有令牌时,校验所述API请求中的令牌是否有效;在所述API请求中未携带令牌或所述API请求中的令牌为无效令牌时,将所述API请求中的鉴权信息提交给用户中心进行身份验证;在所述用户中心身份验证通过后,计算获得令牌,并将计算获得的发送给第二通信模块603;所述API请求中的令牌和计算获得的令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

第二通信模块603,用于向客户端发送计算获得的令牌。

在一个实施例中,所述处理模块602校验所述令牌是否有效的过程可以 是:

根据所述令牌的索引信息获得所述预先约定的参数,根据所述预先约定的参数通过不可逆算法计算当前令牌,判断当前令牌与所述API请求中的令牌是否相同,如果相同,则API请求中的令牌有效,如果不相同,则API请求中的令牌无效。

在一个实施例中,所述令牌的索引信息为身份标识,所述身份标识包括所述客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号中的任意一种信息;所述通信模块602还用于在所述用户中心身份验证通过后,接收所述用户中心返回的身份标识;并在将所述令牌发送给所述客户端时,将所述身份标识发给所述客户端;

所述处理模块602还用于当校验API请求中的令牌是否有效时,从所述API请求中获取所述身份标识,根据所述身份标识查找与所述身份标识对应的预先约定的参数。

在一个实施例中,预先约定的参数包括至少一种身份标识,所述身份标识包括所述客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号中的任意一种信息。

另外,预先约定的参数还可以包括加密秘钥,所述加密秘钥为随机数。

再者,预先约定的参数还可以包括有效期验证参数,所述通信模块602还用于向所述客户端发送所述令牌时,将所述有效期验证参数发送至客户端;

所述处理模块602校验所述令牌是否有效的过程还可以是:

根据所述有效期验证参数判断所述令牌是否过期,如果已过期,则所述API请求中的令牌失效;如果未过期,则根据所述预先约定的参数计算当前令牌,判断当前令牌与所述API请求中的令牌是否相同,如果相同,则所述API请求中的令牌有效,如果不相同,则所述API请求中的令牌无效。

图7是API调用的安全认证装置700的软件逻辑框图如图所示,该装置运行于客户端,包括:

存储模块701,用于当接收到服务器的令牌时,将所述令牌存储;所述令牌和所述新的令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

消息构造模块702,用于当构造API请求时,将所述令牌及鉴权信息携带在所述API请求;

通信模块703,用于接收服务器的所述令牌,并发给所述存储模块,以及将所述API请求发送给服务器。

其中所述通信模块703还用于接收所述服务器发送的令牌的索引信息,并发给所述存储模块701存储;

消息构造模块702还用于当构造所述API请求时,将所述索引信息携带在所述API请求中。

在一个实施例中,所述令牌的索引信息为身份标识,所述身份标识包括所述客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号中的任意一种信息。

在一个实施例中,预先约定的参数包括至少一种身份标识,所述身份标识包括所述客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号中的任意一种信息;所述消息构造模块702还用于收集所述身份标识,并在构造API请求时,将所述身份标识携带在所述API请求中。

请参见图8,为本申请API调用的安全认证系统800的逻辑框图,包括服务器102、用户中心103。

服务器102,用于当收到客户端的API请求后,如果所述API请求中携带有令牌,则校验所述API请求中的令牌是否有效;如果所述API请求中未携带令牌或所述API请求中的令牌为无效令牌,则将所述API请求中的鉴权信息提交给用户中心103进行身份验证;在所述用户中心103身份验证通过后,将计算获得的令牌发送给所述客户端;API请求中令牌和计算获得的令牌为根据预先约定的参数通过不可逆算法获得的加密的随机数;

所述用户中心103,用于根据所述服务器102发送的所述鉴权信息对所 述客户端进行身份验证,以及将身份验证的结果通知所述服务器102。

在一个实施例中,所述服务器102校验所述令牌是否有效包括:

根据所述令牌的索引信息获得所述预先约定的参数,根据所述预先约定的参数通过不可逆算法计算当前令牌,判断当前令牌与所述API请求中的令牌是否相同,如果相同,则所述API请求中的令牌有效,如果不相同,则所述API请求中的令牌无效。

在一个实施例中,所述令牌的索引信息为身份标识,所述身份标识包括所述客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号中的任意一种信息;

所述用户中心103还用于在通过所述客户端的身份验证后,将所述客户端的身份标识返回给所述服务器102;

所述服务器102还用于将所述计算获得的令牌发送给所述客户端时,将所述身份标识发给所述客户端;当校验所述API请求中的令牌是否有效时,从所述API请求中获取所述身份标识,根据所述身份标识查找与所述身份标识对应的预先约定的参数。

在一个实施例中,预先约定的参数包括至少一种身份标识,所述身份标识包括所述客户端的IP地址、MAC地址、客户端标识、用户编号、用户账号中的任意一种信息。

另外,在另一个实施例中,预先约定的参数还包括加密秘钥,所述加密秘钥为随机数。以及有效期验证参数,所述服务器102还用于:

向所述客户端发送所述计算获得的令牌时,将所述有效期验证参数发送至客户端;

所述服务器102校验所述API请求中的令牌是否有效包括:

根据所述有效期验证参数判断所述API请求中的令牌是否过期,如果已过期,则所述令牌失效;如果未过期,则根据所述预先约定的参数计算当前令牌,判断当前令牌与所述API请求中的令牌是否相同,如果相同,则所述令牌有效,如果不相同,则所述API请求中的令牌无效。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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