一种api访问分布式授权方法及其系统的制作方法

xiaoxiao2021-2-23  106

一种api访问分布式授权方法及其系统的制作方法
【技术领域】
[0001]本发明涉及通信技术领域,特别涉及一种API访问分布式授权方法及其系统。
【背景技术】
[0002]目前很多服务都采用WebService方式,可以很容易地提供各种算法、存储等通用Web接口供各种客户端使用。这种方式把很多需要消耗资源的各种计算都移向服务端,或者把需要很多数据资源的处理移向服务端。这样一方面减少了客户端的开发成本、计算和存储成本(有的计算量客户端并不能处理),另一方面可以把各种客户端的数据全部集中到服务端,通过后台分析得到更有价值的数据。
[0003]但是,这也产生了对接口使用过程中的鉴权问题,不能让没有授权的用户使用API(Applicat1n Programming Interface,应用程序编程接口)接口,数据是宝贵的并且各种资源(如CPU Mem等)都是宝贵的。为了保证安全和为授权用户提供更好的服务,以及保证授权用户数据的安全性,鉴权是一个必需的过程。目前的授权有两种方式:一是使用用户名和密码,但很容易被盗取;二是使用OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准,但是后台服务搭建比较麻烦、且流程复杂。
[0004]因而现有技术还有待改进和提高。

【发明内容】

[0005]本发明的目的在于提供一种API访问分布式授权方法及其系统,以解决现有授权易被盗取和搭建比较麻烦的问题。
[0006]为了达到上述目的,本发明采取了以下技术方案:
一种API访问分布式授权方法,其包括:
A、访问服务接口时,API服务器获取访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端;
B、所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性;
C、在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口。
[0007]所述的API访问分布式授权方法中,在所述步骤A之前,还包括:
AO 1、设置服务接口信息,根据服务接口信息生成访问令牌;
A02、根据服务接口信息和访问令牌生成刷新令牌,显示所述访问令牌和刷新令牌并存储。
[0008]所述的API访问分布式授权方法中,所述步骤A01具体包括:
A011、注册用户名和密码后登陆;
A012、选择要访问的服务接口、并设置用户签名;
A013、设置用户外部使用名和过期时间间隔; A014、基于所述服务接口生成地址部分,并根据所述地址部分及所述过期时间间隔生成加密部分。
[0009]所述的API访问分布式授权方法中,所述步骤A014具体包括:
A0141、基于所述服务接口生成所述地址部分;
A0142、根据所述过期时间间隔生成所述时限部分;
A0143、根据所述地址部分、时限部分、用户外部使用名和用户签名生成所述加密部分。[00?0]所述的API访问分布式授权方法中,在所述步骤A0141具体包括:
A01411、遍历用户所选择的API Service接口 ;
A01412、截取API Service接口的地址中第一段和最后一段作为关键字并链接;
A01413、将所有关键字生成地址部分并存储。
[0011]所述的API访问分布式授权方法中,所述步骤A02具体包括:
A021、获取访问令牌中加密部分的数据,通过消息摘要算法生成散列值;
A022、将所述散列值通过用户签名加密,作为刷新令牌;
A023、以该散列值为关键字,以访问令牌中的地址部分和用户外部使用名为值存入DB
集群;
A024、对所述访问令牌和刷新令牌加密后显示。
[0012]所述的API访问分布式授权方法中,所述步骤B具体包括:
B1、中央终端对经用户签名解密后的加密部分进行消息摘要算法生成散列值;
B2、以当前生成的散列值为关键字查询是否已存储在DB集群中:如果没有在则返回无权提不,并通知用户;如果有,执彳丁步骤B3 ;
B3、判断当前生成的散列值对应的地址部分与存储的散列值对应的地址部分是否相同:是则返回解密后的加密部分给API服务器;否则返回无权提示,并通知用户。
[0013]所述的API访问分布式授权方法中,所述步骤C具体包括:
Cl、分别判断存储的地址部分和时限部分与当前解密后的加密部分的地址部分和时限部分是否均匹配:是则执行步骤C2;否则返回无权消息提示并通知用户;
C2、判断当前的系统时间是否达到预设的过期时间:是则向用户返回过期提示信息;否则执行步骤C3;
C3、判断当前地址部分的关键字中是否有需访问的服务接口的关键字:有则调用所述服务接口 ;没有则返回未受权。
[0014]所述的API访问分布式授权方法中,在所述步骤C2中,向用户返回过期提示信息后,还包括:以输入的刷新令牌更新访问令牌,根据访问令牌中的接口信息生成新的刷新令牌。
[0015]—种API访问分布式授权系统,其包括若干个API服务器和中央终端;
访问服务接口时,所述API服务器获取访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端;所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性;在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口。
[0016]相较于现有技术,本发明提供的API访问分布式授权方法及其系统,访问服务接口时,API服务器获取访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端;所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性;在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口;采用访问令牌作为鉴权的依据来判断是否有权访问对应的服务接口,使用访问令牌更加方便,易于操作,且破译难度大,大大提高了安全性。
【附图说明】
[0017]图1为本发明提供的API访问分布式授权方法的方法流程图。
[0018]图2为本发明提供的API访问分布式授权方法中步骤S10?S20的方法流程图。
[0019]图3为本发明提供的API访问分布式授权方法中步骤S10应用实施例的方法流程图。
[0020]图4为本发明提供的API访问分布式授权方法中步骤S20应用实施例的方法流程图。
[0021]图5为本发明提供的API访问分布式授权方法中步骤S200应用实施例的方法流程图。
[0022]图6为本发明提供的API访问分布式授权方法中步骤S300—较佳实施例的方法流程图。
[0023]图7为本发明提供的API访问分布式授权方法中步骤S300另一较佳实施例的方法流程图。
[0024]图8为本发明提供的API访问分布式授权方法中步骤S321应用实施例的方法流程图。
[0025]图9为本发明提供的API访问分布式授权系统的结构框图。
【具体实施方式】
[0026]本发明提供一种API访问分布式授权方法及其系统,通过生成的访问令牌作为鉴权的依据来判断是否有权访问对应的接口,当访问令牌过期时由生成的刷新令牌更新;采用令牌(Token)方式不易被破解,即使用户名和密码被盗也很难改变令牌的访问权限。为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0027]请参阅图1,其为本发明提供的API访问分布式授权方法流程图。本发明提供的API访问分布式授权方法包括:
S100、访问服务接口时,API服务器获取访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端;
S200、所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性;
S300、在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的 有效性;若均有效则API服务器调用所述服务接
□ ο
[0028]本实施例中,在所述步骤S100之前,需要先生成访问令牌和刷新令牌,如图2所示,其包括:
步骤S10、设置服务接口信息,根据服务接口信息生成访问令牌。
[0029]步骤S20、根据服务接口信息和访问令牌生成刷新令牌,显示所述访问令牌和刷新令牌并存储;
在所述步骤S10中,先注册用户名和密码,然后用户再通过用户名和密码登陆后台管理系统。接着用户根据弹出的设置框输入相应的参数,如图3所示即步骤S10具体包括:
步骤S11、注册用户名和密码后登陆。
[0030]步骤S12、选择要访问的服务接口、并设置用户签名。
[0031]用户在该设置框对应的项目下输入APIService接口(S卩服务接口)和用户签名。API Service接口即URL(Uniform Resoure Locator,统一资源定位器),是WWW页的地址。用户签名即用户设置的加密方式,可以为字符或数字。
[0032]步骤S13、设置用户外部使用名和过期时间间隔。
[0033]在设置框的对应项目下,用户输入用户外部使用名和过期时间间隔,用于进行时限设置。还可输入消息通知邮件地址,以便后续出现问题时发邮件给用户。
[0034]步骤S14、基于所述服务接口生成地址部分,并根据所述地址部分及所述过期时间间隔生成加密部分。
[0035]本实施例中,访问令牌即访问Token(后续以访问Token为例),由三部分组成。一是根据API Service接口(S卩服务接口)生成的地址部分,由各个URL的关键字以“;”连接组成,表示该Token可以访问的URL权限(相当于可以访问哪些地址或接口)。二是根据过期时间间隔生成的时限部分,即过期时间,在过期时间达到后权限过期。三是根据地址部分、时限部分、用户外部使用名和用户签名生成的加密部分,将地址部分、时限部分、用户外部使用名组合在一起(地址部分+时限部分+用户外部使用名)后通过用户签名加密获得。完整访问Token的结构为地址部分.时限部分.加密部分;其中,地址部分.时限部分.加密部分为一个整体,点号用于将这三个部分分开,以方便系统识别。在所述步骤S100中,所述访问令牌的解密数据即是地址部分.时限部分.加密部分。
[0036]在所述访问Token中,所述根据API Service接口生成地址部分的方法为:
遍历用户所选择的API Service接口,即用户需要链接的服务接口。
[0037]截取APIService接口的地址中第一段和最后一段作为关键字并链接。例如,地址为/servicel/…/getxxinfo,第一段为servicel,最后一段为getxxinfo,以点号“.”将两者链接,贝丨』生成的关键字为servicel.getxxinfo。
[0038]将所有关键字生成地址部分并存储。具体为,将生成的关键字添加到URL_T0KEN_PART(地址令牌)中,相邻两个关键字之间以分号“;”分开。例如有两个关键字servicel.getxxinfo 和 service2.getbbinfo,贝 lj存储为 servicel.getxxinfo;service2.getbbinfo。所有的关键字组成地址部分。
[0039]在所述访问Token中,所述根据过期时间间隔生成时限部分的方法为:
获取设置的过期时间间隔和当前的系统时间。
[0040]根据当前的系统时间和过期时间间隔生成过期时间。所有时间精确到秒。例如,当前的系统时间为2 015年1月1号上午9点18分2 6秒,过期时间间隔为5个月,则过期时间为2015年6月1号上午9点18分26秒,过期时间达到后AP I接口的权限过期,无权。
[0041]在所述访问Token中,所述根据地址部分、时限部分、用户外部使用名和用户签名生成加密部分的方法为:将地址部分.时限部分.用户外部使用名通过用户签名加密。该部分涉及用户数据无法在API服务器(即API Service)解密。
[0042]通过上述方法生成访问令牌后,即可根据接口信息和访问令牌生成刷新令牌。即本实施例中,如图4所示,所述步骤S20具体包括:
步骤S21、获取访问令牌中加密部分的数据(即地址部分.时限部分.用户外部使用名),通过消息摘要算法生成散列值。
[0043]消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法为现有技术,此处对其工作原理不作详述。
[0044]步骤S22、将所述散列值通过用户签名加密,作为刷新令牌。
[0045]步骤S23、以该散列值为关键字(Key),以访问令牌中的地址部分和用户外部使用名为值存入DB集群(也叫存储器或中央数据库)。
[0046]例如,[散列值:地址部分.用户外部使用名];即需要所计算的散列值才能访问存储在中央数据库的访问令牌中的地址部分和用户外部使用名。
[0047]步骤S24、对所述访问令牌和刷新令牌加密后显示。
[0048]本步骤具体包括:先对访问Token和刷新Token分别采用预设的加密算法加密,接着向用户返回加密后的访问Token和刷新Token。该步骤中,预设的加密算法在Author鉴权模块和API服务器中的鉴权模块是一致的,都存在于服务端中,用户端并不清楚,所以一定程度上保证了安全性。
[0049]通过上述方法获得访问令牌和刷新令牌后,在实际访问服务接口时,通过对访问令牌进行验证即可识别是否有权限。即在所述步骤S100中,客户端在访问服务接口(S卩APIService接口)时,API服务器提示用户输入访问Token。由API服务器的鉴权模块对访问Token进行解密(该解密对应步骤S24中的预设的加密算法加密),获得的地址部分和时限部分为明文,加密部分仍为密文。
[0050]接着API服务器的鉴权模块将所述加密部分发送至中央终端的Author鉴权模块中通过用户签名进行解密,如图5所示,则所述步骤S200具体包括:
步骤S210、中央终端对经用户签名解密后的加密部分进行消息摘要算法生成散列值。[0051 ] Author鉴权模块经用户签名对接收的加密部分解密,解密后获得地址部分.时限部分.用户外部使用名。对地址部分、时限部分、用户外部使用名进行散列。消息摘要算法对字串敏感,如果有修改生成的散列值必不相同,因此上述生成过期时间时要求时间精确到秒,这样可提尚暴力破解的难度。
[0052]步骤S220、以当前生成的散列值为关键字查询是否已存储在DB集群中(即在DB集群中是否有存储与当前的散列值相同的散列值):如果没有在则返回无权提示,并通知用户(通过用户外部使用名查询用户邮件地址,发邮件通知用户访问Token被人修改盗用);如果有,执行步骤S230。
[0053]步骤S230、判断当前生成的散列值对应的地址部分与存储的散列值对应的地址部分是否相同:是则返回解密后的加密部分给API服务器(的鉴权模块);否则返回无权提示,并通知用户(通过用户外部使用名找到用户邮件地址,发邮件通知用户访问Token被人修改盗用)。
[0054]接着由API服务器的鉴权模块判断加密部分的地址部分、时限部分的有效性,如图6所示,其具体包括:
步骤S310、分别判断存储的地址部分和时限部分与当前解密后的加密部分的地址部分和时限部分是否匹配:是则执行步骤S320;否则返回无权消息提示并通知用户(邮件通知,具体方法与上述邮件通知相同)。
[0055]由中央终端向用户发送邮件提示访问Token被修改盗用。
[0056]步骤S320、判断当前的系统时间是否达到预设的过期时间:是则向用户返回过期提示信息;否则执行步骤S330。
[0057]步骤S330、判断当前地址部分的关键字(Key)中是否有需访问的服务接口的关键字:有则调用所述服务接口(即URL服务接口);没有则返回未受权。
[0058]在所述步骤S320中,如图7所示,当前的系统时间达到过期时间时,向用户返回过期提示信息之后,还包括步骤S321、以输入的刷新令牌更新访问令牌,根据访问令牌中的接口信息生成新的刷新令牌;其具体包括:
步骤S3211、客户端访问中央刷新令牌服务接口并提供刷新令牌。中央刷新令牌服务接口由后台管理模块提供
步骤S3212、对刷新令牌解密后、再通过用户签名解密。第一次解密对应步骤S24中的预设的加密算法加密,第二次解密采用用户签名。
[0059]步骤S3213、判断存储的刷新令牌中是否有解密获得的关键字:若 无则返回无权;若有则执行步骤S3214。该步骤即是以解密获得的关键字来查询其对应的所有的访问权限,若存储的刷新令牌中有该关键字,基于其时限失效,需通过步骤S3214重新生成;若没有该关键字则无权。
[0060]步骤S3214、根据输入的访问令牌生成新的访问令牌和刷新令牌并替换。
[0061 ]本步骤中,输入的访问令牌中已经包括地址部分、时限部分和加密部分。从这些部分中提取出要访问的API Service接口、用户签名、用户外部使用名、过期时间间隔和消息通知邮件地址。然后重复上述步骤S10即可生成新的访问令牌,接着再重复步骤S20即可生成新的刷新令牌,即可以新的刷新令牌中的关键字(Key)替换旧的关键字,从而解除权限到期的问题。
[0062]基于上述的API访问分布式授权方法,本发明还相应提供一种API访问分布式授权系统(见图9),其包括若干个(如图9中的η个)API服务器(S卩API Service,如图9中的η个,每个API服务器执行不同的接口任务)和中央终端1。访问服务接口时,所述API服务器获取访问令牌并解密,获得访问令牌的解密数据(即地址部分.时限部分.加密部分),并将解密数据中的加密部分传输给中央终端。中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据(即地址部分.时限部分.用户外部使用名),并判断所述加密部分的有效性。在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口。[0063 ]其中,所述中央终端1包括后台管理模块11、Author鉴权模块12和DB集群13。各API服务器分别包括一鉴权模块。其中,所述后台管理模块11执行上述步骤S11、步骤S12、步骤S13和步骤S3211。所述Author鉴权模块12执行上述步骤S14(包括地址部分、时限部分、加密部分的生成方法步骤),步骤S20(步骤S21?S24),步骤S210?S230和步骤S3212?S3214。所述API服务器的鉴权模块执行上述步骤S100,S300(步骤S310?SSSOhDB集群13用于存储上述所有数据(包括初始生成的访问令牌、刷新令牌、用户名、密码等)。
[0064]综上所述,本发明采用访问令牌作为鉴权依据,如果访问令牌中的地址部分或时限部分被更改,则不能通过加密部分的验证。如果加密部分被更改,则不能通过中央终端的Author鉴权验证。由于在使用过程中从未出现过用户名和密码,因此即使Token丢失,通过上述步骤中可以看出,很难通过用户名和密码更改Token的访问权限,增加了被盗窃的难度。他人最多是在用户没有察觉的情况下使用与用户权限相同的Token但不能更改。一旦用户发现被盗用,可在后台管理模块中废弃旧的Token重新生成新Token。同时,该中央系统具有良好的负载能力,不涉及用户敏感数据的操作全部由分布在各个API服务器中的鉴权模块处理。这样能减小Author鉴权模块的压力。还具有可控的service api(—个API服务器中有若干个service api)访问粒度,用户可以选择需要使用的URL地址,可以针对不同的业务需求生成不用的Token,从而预防单个Token权限过大的问题,减少Token丢失后的范围影响。也具有良好的可扩展性,由于系统在设计时鉴权模块的功能独立并不依赖中央终端,所以不影响API服务器的横向扩展。而中央终端中的Author鉴权模块逻辑简单,也很容易进行横向扩展。
[0065]可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
【主权项】
1.一种API访问分布式授权方法,其特征在于,包括: A、访问服务接口时,API服务器获取访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端; B、所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性; C、在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口。2.根据权利要求1所述的API访问分布式授权方法,其特征在于,在所述步骤A之前,还包括: AO 1、设置服务接口信息,根据服务接口信息生成访问令牌; A02、根据服务接口信息和访问令牌生成刷新令牌,显示所述访问令牌和刷新令牌并存储。3.根据权利要求2所述的API访问分布式授权方法,其特征在于,所述步骤A01具体包括: A011、注册用户名和密码后登陆; A012、选择要访问的服务接口、并设置用户签名; A013、设置用户外部使用名和过期时间间隔; A014、基于所述服务接口生成地址部分,并根据所述地址部分及所述过期时间间隔生成加密部分。4.根据权利要求3所述的API访问分布式授权方法,其特征在于,所述步骤A014具体包括: A0141、基于所述服务接口生成所述地址部分; A0142、根据所述过期时间间隔生成所述时限部分; A0143、根据所述地址部分、时限部分、用户外部使用名和用户签名生成所述加密部分。5.根据权利要求4所述的API访问分布式授权方法,其特征在于,在所述步骤A0141具体包括: A01411、遍历用户所选择的API Service接口 ; A01412、截取API Service接口的地址中第一段和最后一段作为关键字并链接; A01413、将所有关键字生成地址部分并存储。6.根据权利要求2所述的API访问分布式授权方法,其特征在于,所述步骤A02具体包括: A021、获取访问令牌中加密部分的数据,通过消息摘要算法生成散列值; A022、将所述散列值通过用户签名加密,作为刷新令牌; A023、以该散列值为关键字,以访问令牌中的地址部分和用户外部使用名为值存入DB集群; A024、对所述访问令牌和刷新令牌加密后显示。7.根据权利要求1所述的API访问分布式授权方法,其特征在于,所述步骤B具体包括: B1、中央终端对经用户签名解密后的加密部分进行消息摘要算法生成散列值; B2、以当前生成的散列值为关键字查询是否已存储在DB集群中:如果没有在则返回无权提不,并通知用户;如果有,执彳丁步骤B3 ; B3、判断当前生成的散列值对应的地址部分与存储的散列值对应的地址部分是否相同:是则返回解密后的加密部分给API服务器;否则返回无权提示,并通知用户。8.根据权利要求1所述的API访问分布式授权方法,其特征在于,所述步骤C具体包括: C1、分别判断存储的地址部分和时限部分与当前解密后的加密部分的地址部分和时限部分是否均匹配:是则执行步骤C2;否则返回无权消息提示并通知用户; C2、判断当前的系统时间是否达到预设的过期时间:是则向用户返回过期提示信息;否则执行步骤C3; C3、判断当前地址部分的关键字中是否有需访问的服务接口的关键字:有则调用所述服务接口 ;没有则返回未受权。9.根据权利要求8所述的API访问分布式授权方法,其特征在于,在所述步骤C2中,向用户返回过期提示信息后,还包括:以输入的刷新令牌更新访问令牌,根据访问令牌中的接口信息生成新的刷新令牌。10.一种API访问分布式授权系统,其特征在于,包括若干个API服务器和中央终端; 访问服务接口时,所述API服务器获取访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端;所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性;在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口。
【专利摘要】本发明公开了一种API访问分布式授权方法及其系统,API访问分布式授权方法包括:A、访问服务接口时,API服务器获取输入的访问令牌并解密,获得访问令牌的解密数据,并将解密数据中的加密部分传输给中央终端;B、所述中央终端将所接收的加密部分经用户签名解密获得所述加密部分的解密数据,并判断所述加密部分的有效性;C、在加密部分有效时,所述中央终端发送解密后的加密部分给所述API服务器以判断所述加密部分的地址部分、时限部分的有效性;若均有效则API服务器调用所述服务接口;采用访问令牌作为鉴权的依据来判断是否有权访问对应的服务接口,使用访问令牌更加方便,易于操作,且破译难度大,大大提高了安全性。
【IPC分类】H04L29/06
【公开号】CN105491058
【申请号】CN201511006174
【发明人】董延平
【申请人】Tcl集团股份有限公司
【公开日】2016年4月13日
【申请日】2015年12月29日

最新回复(0)