CN110569638B - 一种api认证的方法、装置、存储介质及计算设备 - Google Patents
一种api认证的方法、装置、存储介质及计算设备 Download PDFInfo
- Publication number
- CN110569638B CN110569638B CN201810576265.4A CN201810576265A CN110569638B CN 110569638 B CN110569638 B CN 110569638B CN 201810576265 A CN201810576265 A CN 201810576265A CN 110569638 B CN110569638 B CN 110569638B
- Authority
- CN
- China
- Prior art keywords
- user
- api gateway
- token
- server
- gateway server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种API认证的方法、装置、存储介质及计算设备,所述方法包括:第一API网关服务器若确定所述第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识;所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种API认证的方法、装置、存储介质及计算设备。
背景技术
计算机应用已深入到生活和生产的各个环节,其中,云计算应用作为一种网络计算模式而备受关注。而分布式***可以为云计算作为后端支持,实现了异地分布,有效的提高了云计算的计算能力,对超大规模、虚拟化、负载均衡等特性发挥实质性的作用。
另一方面,用户访问入口也由原来单一的PC客户端变化到多个平台,例如各种浏览器、手机移动端及智能终端等。不同的平台之间经常会涉及与其他平台对接、共享数据的需求。现有技术中,可以采用API网关,以统一服务入口,实现对平台众多服务接口进行管控,对访问服务的身份进行认证等。
因此,针对分布式***的API网关认证方式,存在用户在异地***登陆时需要再次认证,降低了用户访问效率,降低了用户体验。因此,目前亟需一种API认证的方法,在保证用户信息安全的前提下,提高用户异地访问效率的问题。
发明内容
本申请实施例提供一种API认证的方法、装置、存储介质及计算设备,用以解决现有API认证的方式存在的无法实现异地认证的问题。
本申请实施例提供一种API认证的方法,包括:
第一API网关服务器若确定所述第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;
所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识;所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权。
一种可能的实现方式,所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识,包括:
所述第一API网关服务器通过所述第一API网关服务器的消息队列代理服务器向至少一个第二API网关服务器的消息队列代理服务器发送所述第一用户的Token和所述第一用户标识,所述第二API网关服务器的消息队列代理服务器用于将所述第一用户的Token和所述第一用户标识传输至所述第二API网关服务器。
一种可能的实现方式,所述第一API网关服务器生成所述第一用户的Token之后,还包括:
所述第一API网关服务器根据预先约定的密钥对所述第一用户的Token和所述第一用户标识进行加密;
所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识,包括:
所述第一API网关服务器将加密后的所述第一用户的Token和所述第一用户标识,发送至所述至少一个第二API网关服务器。
一种可能的实现方式,所述方法还包括:
所述第一API网关服务器接收所述第二API网关服务器发送的第二用户的Token和第二用户标识;
所述第一API网关服务器若确认所述第一API网关服务器未存储所述第二用户的Token,则将所述第二用户的Token和所述第二用户标识存储至本地;所述第二用户的Token为所述第二API网关服务器生成的。
一种可能的实现方式,所述方法还包括:
所述第一API网关服务器接收所述第一API网关服务器的应用服务器发送的应用请求,所述应用请求包括所述第二用户的Token;
所述第一API网关服务器根据本地存储的用户Token与用户标识的对应关系,确定所述第二用户的用户标识,并根据所述第二用户的用户标识,在所述用户管理服务器中确定所述第二用户的用户信息;
所述第一API网关服务器将所述第二用户的用户信息返回至所述第一API网关服务器的应用服务器。
本申请实施例提供一种API认证的装置,包括:
处理单元,用于若确定所述第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;
收发单元,用于向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识;所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权。
一种可能的实现方式,所述收发单元具体用于:
通过所述第一API网关服务器的消息队列代理服务器向至少一个第二API网关服务器的消息队列代理服务器发送所述第一用户的Token和所述第一用户标识,所述第二API网关服务器的消息队列代理服务器用于将所述第一用户的Token和所述第一用户标识传输至所述第二API网关服务器。
一种可能的实现方式,所述处理单元还用于:
根据预先约定的密钥对所述第一用户的Token和所述第一用户标识进行加密;
所述收发单元具体用于:将加密后的所述第一用户的Token和所述第一用户标识,发送至所述至少一个第二API网关服务器。
一种可能的实现方式,所述收发单元还用于:接收所述第二API网关服务器发送的第二用户的Token和第二用户标识;
所述处理单元,还用于若确认所述第一API网关服务器未存储所述第二用户的Token,则将所述第二用户的Token和所述第二用户标识存储至本地;所述第二用户的Token为所述第二API网关服务器生成的。
一种可能的实现方式,所述收发单元,还用于:接收所述第一API网关服务器的应用服务器发送的应用请求,所述应用请求包括所述第二用户的Token;将所述第二用户的用户信息返回至所述第一API网关服务器的应用服务器;
所述处理单元,还用于根据本地存储的用户Token与用户标识的对应关系,确定所述第二用户的用户标识,并根据所述第二用户的用户标识,在所述用户管理服务器中确定所述第二用户的用户信息。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述实施例中任一项所述的方法。
本申请实施例提供一种API认证的计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述实施例中任一项所述的方法。
本申请实施例提供的一种API认证的方法及装置,通过将第一API网关服务器生成的第一用户的Token和用户标识发送至至少一个第二API网关服务器,使得所述第一用户在登录所述至少一个第二API网关服务器时,不再需要再次生成Token,可以根据所述第一API网关服务器生成的Token,进行鉴权认证,有效的提高了用户在访问不同API网关服务器的效率。
附图说明
图1为用户访问API网关的分布式***架构示意图;
图2为本申请实施例中一种API认证的方法流程示意图;
图3为本申请实施例中一种API认证的方法的实现流程示意图;
图4为本申请实施例中一种API认证的方法的实现流程示意图;
图5为本申请实施例中一种API认证的装置的结构示意图;
图6为本申请实施例中一种API认证的计算设备的结构示意图。
具体实施方式
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示,为本申请实施例中的***架构的示意图,至少包括:API网关服务器101、API网关服务器102及API网关服务器103,应用服务器104-106。本示意图中每个API网关服务器对应一个应用服务器,当然,也可以对应多个应用服务器,本方案不做限定。需要说明的是,各API网关服务器可以为相同功能的API网关服务器,也可以为不同功能的,在本示意图中各API网关服务器之间的区别为分布于不同地域,为了描述方便,本申请实施例中将API网关服务器区分为第一API网关服务器101和第二API网关服务器102-103。
API网关服务器用于API请求的路由转发,即根据请求路径转发给与该路径相对应的应用服务。API网关服务器可以提供统一规范的对外服务,同时充当了平台的PaaS层。一种可能的实现方式中,API网关服务器提供统一基于http协议的Web API访问接口,内部每个模块各自实现功能,如黑白名单、日志、协议适配、身份认证、计流限流及路由,从而实现API网关访问权限控制和定位目标应用服务的功能。具体的,客户端程序通过互联网或者专网,对API网关服务器进行访问,由API网关服务器接收请求后,对客户端进行认证,并确定所述请求对应处理的应用服务器,并将所述请求转发至对应处理的应用服务器进行处理。
应用服务器,用于提供不同或相同的服务能力。例如,如图1所示,应用服务器104与第一API网关服务器101位于同一地域,应用服务器105与第二API网关服务器102位于同一地域,应用服务器106与第二API网关服务器103位于同一地域。当然,同一地域的划分可以根据实际需要划分,其中同一地域中可以包括多个相同功能或不同功能的应用服务器,可以根据实际需要确定。
在存在账号体系的信息***中,对身份的鉴定是非常重要的事情。如果用户每次都采用用户名/密码访问API网关服务器,则很容易泄露用户信息,带来安全隐患。本方案中通过在认证鉴权中心对用户名/密码验证通过后获得的Token作为用户凭据访问API网关服务器。这种处理方式的优势在于:1.无状态:在客户端存储的Tokens是无状态的,不存储会话Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上,避免了cookie验证中,必须将已验证的用户的信息保存在Session中。2.安全性:用户的应用请求中发送Token而不再是发送cookie,能够防止CSRF(跨站请求伪造)。Token是有时效的,一段时间之后用户需要重新验证。另外,Token有撤回的操作,通过Token revocataion可以使一个特定的Token或是一组有相同认证的Token无效。3.可扩展性:Tokens能够创建与其它程序共享权限的程序。例如,能将一个社交帐号和其他账号(Fackbook或是Twitter)进行关联。当用户的用户信息通过服务登录Twitter,我们可以将这些用户信息附到Twitter的数据流上。使用Tokens时,可以提供可选的权限给第三方应用程序。当用户想让另一个应用程序访问它们的数据,我们可以通过建立自己的API,得出特殊权限的Tokens。4.多平台跨域,CORS(跨域资源共享),对应用程序和服务进行扩展的时候,需要介入各种的设备和应用程序。只要有一个通过了验证,数据和资源就能够在任何域上被请求到。
Token认证方式有多种,例如,基于JWT的Token认证和基于PKI的Token认证。这两种方式的Token中包含Token的元信息(metadata),即包括用户信息,一旦被解密,用户的所有信息都将被泄露,安全性不能保证。由于这两种方式的Token都过于冗长,以及元信息容易被泄露,难以真正应用于异地分布式场景。
而基于UUID的Token中不包含Token元信息,提高了用户信息的安全性,并且该方式生成Token较简单,没有复杂的加密、编码过程,对Token的管理更自由。但是,生成的UUID的Token与其元信息的对应关系,需要持久化到数据库或放置在缓存中,导致基于UUID的Token认证方法,无法实现异地分布式场景下的Token共享,而需要用户在异地***多次认证,导致了Token认证效率较低。
本申请实施例提出了一种API认证的方法,解决了Token在异地分布式场景下不共享、需要用户在异地***多次认证,导致认证效率较低的问题。如图2所示,包括以下步骤:
步骤201、第一API网关服务器若确定所述第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;
步骤202、所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识。
其中,所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权。
针对第二API网关服务器接收第一用户的Token和第一用户标识的场景,一种可能的实现方式,所述方法还包括:
步骤一、所述第二API网关服务器接收所述第一API网关服务器发送的第一用户的Token和第一用户标识;
步骤二、所述第二API网关服务器若确认所述第二API网关服务器未存储所述第一用户的Token,则将所述第一用户的Token和所述第一用户标识存储至本地;
其中,所述第一用户的Token为所述第一API网关服务器生成的。
通过上述方法,第一用户向第一API网关服务器101发送一次注册请求之后,通过将第一用户的Token和第一用户标识发送至第二API网关服务器,可以使得第二API网关服务器102-103在本地就可以对Token进行鉴权。如第一用户在注册请求时是连接到第一API网关服务器,在后续对应用服务器的访问过程中,可能使用的是应用服务器106,则在第一用户的应用请求中携带第一用户的Token,进而通过第二API网关服务器103进行鉴权后即可在应用服务器106中进行访问,不需要再次生成Token,即可在该分布式***中任意分布式的API网关服务器101-103中成功访问,实现了“一处认证,多处访问”的效果,提高了***的认证和访问效率,减少了用户发送用户信息的次数。
第二方面,第一API网关服务器101还可以作为接收用户的Token和用户标识的接收端。例如,针对第二API网关服务器102接收第二用户的注册请求,第一API网关服务器101接收第二API网关服务器102发送的第二API网关服务器102为所述第二用户生成的Token的场景,一种可能的实现方式,所述方法还包括:
步骤一、所述第一API网关服务器接收所述第二API网关服务器发送的第二用户的Token和第二用户标识;
步骤二、所述第一API网关服务器若确认所述第一API网关服务器未存储所述第二用户的Token,则将所述第二用户的Token和所述第二用户标识存储至本地;
其中,所述第二用户的Token为所述第二API网关服务器生成的。具体过程可以参考第一方面中的实施例,在此不再赘述。
在步骤201中,可以包括以下步骤:
步骤1:第一用户在A地首次访问***时,位于A地的所述第一API网关服务器接收所述第一用户发送的注册请求;
其中,所述注册请求中包括所述第一用户的用户信息,所述用户信息可以为用户的用户名和用户密码,例如在如下场景中,用户在web浏览器端登录***,使用***服务;用户在手机端(Android/iOS)登录***,使用***服务。也可以为用户在使用***服务时需要输入的其他信息,例如,用户使用开放接口登录***,调用***服务;用户在PC处理登录状态时通过手机扫码授权手机登录;用户在手机处理登录状态通过手机扫码授权PC端进行登录。这些场景有不同的环境安全威胁,不同的会话生存周期,不同的用户权限控制体系,不同级别的接口调用方式。在不同的应用场景中所述注册请求中所携带的用户信息也有所不同。
其中,第一API网关服务器101在接收第一用户的注册请求时,可以根据所述注册请求中的用户信息确定所述第一用户为首次访问所述***;也可以根据第一API网关服务器101中,未存储所述第一用户的Token,确定所述第一用户为首次访问所述***。
步骤2:所述第一API网关服务器接收所述注册请求后,根据所述注册请求,验证注册请求中携带的用户信息。
步骤3:第一API网关服务器101若确定用户信息不合法,则拒绝请求;若确定用户信息合法,则由第一API网关服务器101生成第一用户的Token(用户认证信息),并将第一用户的Token发送至第一用户。
其中,第一API网关服务器101若确定所述第一用户为首次访问该***时,为了保证安全可靠性,所述第一API网关服务器为用户分配的Token为一次性有效并且在设定的时间长度后过期的信息,时间长度一般设定为5分钟、10分钟等,还可以根据实际情况灵活调整。
步骤4:第一API网关服务器101生成第一用户的Token之后,可以将第一用户的Token以及第一用户标识存放在本地缓存中,以便于后续第一用户请求访问该***时可以快速验证Token合法性。
第一API网关服务器101可以用于Token信息的生成、存储及校验,以及用户权限的验证。在异地部署的场景中,需要在不同地域中分别设置API网关服务器。在所述第一用户在B地向位于B地的第二API网关服务器102发送访问请求时,第一用户只需要携带第一API网关服务器101生成的Token访问B地的应用服务器,B地的应用服务器会将Token发送给第二API网关服务器102进行合法性验证。
通过上述方法,第一用户向第一API网关服务器101发送一次注册请求之后,只需携带第一API网关服务器101返回的Token,即可在该分布式***中任意分布式的API网关服务器101-103中成功访问,大大提高了***的认证和访问效率,减少了用户发送账户信息的次数,整个消息传递过程仅需要向第一用户发送UUID的Token,不需要发送JWT等带有元信息的Token,具有安全可靠的特点,通过将UUID的Token和用户标识发送至第二API网关服务器,可以使得第二API网关服务器102-103在本地就可以对Token进行鉴权,使得用户在第二API网关服务器中也可以进行访问,不需要再次生成Token,实现了“一处认证,多处访问”的效果。
为进一步提高Token的传输的安全性,本申请实施例中,第一API网关服务器101还可以用于加密。一种可能的实现方式,第一API网关服务器生成第一用户的Token之后,还包括:第一API网关服务器根据预先约定的密钥对第一用户的Token和第一用户标识进行加密。所述加密方式可以为所述第一API网关服务器根据RSA算法产生一对公钥和私钥。所述第一API网关服务器保留私钥,将公钥发送给第二API网关服务器和用户。当然,也可以通过其他方式进行加密,在此不做限定。
第一API网关服务器向至少一个第二API网关服务器发送第一用户的Token和第一用户标识,包括:第一API网关服务器将加密后的第一用户的Token和第一用户标识,发送至至少一个第二API网关服务器。
在一种具体的实施过程中,第一API网关服务器101可以根据预先确定的加密算法对Token同步消息做加密,并将加密后的Token同步消息发送至第二API网关服务器102-103。所述Token同步消息可以包括所述第一用户的Token和所述第一用户标识。
在步骤202中,一种可能的实现方式,所述第一API网关服务器可以采用现有的信令,也可以采用新的信令将所述Token同步消息发送至所述至少一个第二API网关服务器,即该新的信令专用于发送Token同步消息。
例如,所述一API网关服务器与所述第二API网关服务器还可以采用超文本传输协议(HyperText Transfer Protocol,HTTP)、HTTP的安全协议(HTTP over Secure SocketLayer)、WebSocket协议中的任意一种进行通讯。
结合图2,如图3所示,所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token,可以通过以下方式实现:所述API网关服务器101-103分别和对应的应用服务器104-106连接,消息队列代理服务器111-113分别和所述API网关服务器101-103连接,其中,消息队列代理服务器111-113,为在不同地域中分别搭建的该地域所属的消息队列代理服务器。不同地域的消息队列代理服务器111-113之间通过配置建立异地传输通道互相连接。消息队列代理服务器111和至少一个应用服务器103相连接。消息队列代理服务器111-113之间通过配置建立异地传输通道,可实现异地服务间的消息传输。
在现代云架构中,应用程序可以分解为多个规模较小且更易于开发、部署和维护的独立构建块。消息队列服务器可为这些独立构建块的分布式应用程序提供通信和协调。消息队列服务器支持异步通信,这意味着创建和处理消息的终端节点将与消息队列服务器进行交互,而不是彼此交互。消息队列服务器可以将请求添加到消息队列中,无需再等待这些请求接受处理。消息队列服务器仅在消息可用时才会处理消息。***中的任何服务器都不会停下等待其他服务器,从而优化了数据流。消息队列服务器可永久保留数据,并减少***的不同服务器离线时发生的错误。通过利用消息队列服务器分离不同的服务器,可以提高容错性。即使***的某一部分无法访问,其他部分也仍可继续与消息队列进行交互。消息队列本身也可以进行镜像,以提供更高的可用性。另外,消息队列服务器可以显著简化分离应用程序的编码,同时提高性能、可靠性和可扩展性。此外,还可以将消息队列与发布/订阅消息收发结合起来。
在步骤202中,可以包括以下步骤:
步骤一、所述第一API网关服务器通过所述第一API网关服务器的消息队列代理服务器向至少一个第二API网关服务器的消息队列代理服务器发送所述第一用户的Token和所述第一用户标识;
步骤二、所述第二API网关服务器的消息队列代理服务器将所述第一用户的Token和所述第一用户标识发送至所述第二API网关服务器。
具体的,消息队列代理服务器111将所述第一用户的Token和第一用户标识打包为Token同步消息发送到异地传输通道中,其他任何监听该传输通道的消息队列代理服务器112-113都可从中获取所述Token同步消息。消息队列代理服务器112-113从传输通道中监听Token同步消息并获取所述第一用户的Token和第一用户标识。
为提高Token传输的安全性,一种可能的实现方式,第一API网关服务器101将加密后的所述第一用户的Token和第一用户标识发送至消息队列代理服务器111。消息队列代理服务器112-113分别将所述加密后的所述第一用户的Token和第一用户标识发送给与之相连的第二API网关服务器102-103。第二API网关服务器102-103分别使用约定的密钥对加密信息解密,得到未加密的所述第一用户的Token和所述第一用户标识,并将所述第一用户的Token和所述第一用户标识存储在本地。
步骤三,消息队列代理服务器111将所述Token发送至所述第一用户或包括发送所述第一用户的注册请求的应用服务器。
具体的,利用消息队列服务器发送至异地传输通道中的方式,可以包括三种基本模式:
1.请求应答模式(req和rep):消息为双向的,有来有往,第一API网关服务器作为请求段发送的Token同步消息,第二API网关服务器必须答复给第一API网关服务器。
2.订阅发布模式(sub和pub):消息为单向的,有去无回。在具体实施过程中,可按照发布端发布制定主题消息,订阅端可订阅需要的主题,订阅端(例如,第二API网关服务器)只会收到自己已经订阅的主题(例如,Token同步消息)。第一API网关服务器作为发布端发布一条Token同步消息,可被多个作为订阅端的第二API网关服务器收到。
3.单向传输(push pull)模式:消息单向的,有去无回。发送端(push)发送的任何一个消息,始终只会有一个接收端(pull端)收到消息。例如,在该模式下,第一API网关服务器需要分别向N个第二API网关服务器发送Token同步消息。
其他代理模式和路由模式等都是在这三种基本模式上面的扩展或变型。具体实施过程中,可以根据实际需要进行确定,在此不做限定。
通过上述方法,通过消息队列代理服务器发送所述Token同步消息,在不影响本地API网关服务器的性能的同时,实现了“一处认证,多处访问”,并且有效的提高了异地API网关服务器的整体性能,大大提高了分布式***中的认证和访问效率,以及整个***的可靠性和可扩展性。
本申请实施例中,本申请实施例中提供一种第二API网关服务器102认证第一用户的应用请求的方式,所述第一用户的Token为第一API网关服务器101生成的,具体可以包括:
步骤一:第二API网关服务器102接收第二API网关服务器102的应用服务器105发送的应用请求,所述应用请求包括第二用户的Token;
步骤二:第二API网关服务器102根据本地存储的用户Token与用户标识的对应关系,确定所述第一用户的用户标识,并根据所述第一用户的用户标识,在用户管理服务器中确定所述第一用户的用户信息。
其中,所述用户管理服务器,用于存储***中存储的用户信息,API网关在进行Token验证通过时获取用户的用户信息。
通过上述方法,实现了步骤202中的所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权。
步骤三:第二API网关服务器102将所述第一用户的用户信息返回至所述应用服务器。
同理,第二用户向第一API网关服务器101发送应用请求时的具体过程,可以参考上述实施例,在此不再赘述。其中,所述第二用户的应用请求中携带有第二API网关服务器生成的Token。
如图4所示,本申请实施例提供一种API认证的流程,包括:
步骤401:用户发送注册请求,所述注册请求包括所述用户的用户名和密码;
步骤402:第一API网关服务器101根据所述注册请求验证所述用户的合法性;若确定所述用户合法,则生成所述用户的Token;
步骤403:第一API网关服务器101将所述Token发送至所述用户;
步骤404:加密所述Token和所述用户标识,生成Token同步消息,并将所述Token同步消息发送至消息队列服务器104;
步骤405:消息队列服务器104将所述Token同步消息发送至消息队列;
步骤406:消息队列服务器105和消息队列服务器106从消息队列中接收所述Token同步消息,并发送至对应的第二API网关服务器102-103;
步骤407:第二API网关服务器102和103分别解密所述Token同步消息,并将解密出的所述用户的Token和所述用户标识存储在本地;
步骤408:所述用户发送应用请求至第二API网关服务器102,所述应用请求中包括所述用户的Token。
步骤409:第二API网关服务器102收到所述用户发送的所述应用请求,并将所述应用请求转发至第二API网关服务器102中所述应用请求对应的应用服务器122。
步骤410:应用服务器122接收到所述应用请求,通过解析所述应用请求的请求头,获取所述Token,并将所述应用请求发送至第二API网关服务器102,验证所述Token的合法性。
步骤411:第二API网关服务器102验证所述Token的合法性,并对所述Token进行鉴权。若合法,则确定所述应用请求为合法请求;将所述应用请求的验证结果返回给所述应用服务器。若否,则拒绝所述应用请求。
具体的鉴权过程可以包括:根据所述第一API网关服务器根据本地存储的用户Token与用户标识的对应关系,确定所述用户的用户标识,并根据所述用户的用户标识,在用户管理服务器中确定所述用户的用户信息;若确定可以找到所述用户的用户信息,则认为所述应用请求合法;若确定找到的所述用户的用户信息与所述用户标识或所述Token不一致,或者无法找到所述用户信息,则确定所述应用请求不合法。
步骤412:所述应用服务器根据所述验证结果处理所述应用请求,并将所述应用请求的处理结果返回给所述用户。
基于同一技术构思,本申请实施例同时提供了一种API认证的装置,如图5所示,包括:
处理单元501,用于若确定所述第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;
收发单元502,用于向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识;所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权。
一种可能的实现方式,收发单元502具体用于:通过所述第一API网关服务器的消息队列代理服务器向至少一个第二API网关服务器的消息队列代理服务器发送所述第一用户的Token和所述第一用户标识,所述第二API网关服务器的消息队列代理服务器用于将所述第一用户的Token和所述第一用户标识传输至所述第二API网关服务器。
一种可能的实现方式,处理单元501还用于:根据预先约定的密钥对所述第一用户的Token和所述第一用户标识进行加密;
收发单元502还用于:将加密后的所述第一用户的Token和所述第一用户标识,发送至所述至少一个第二API网关服务器。
一种可能的实现方式,收发单元502还用于:接收所述第二API网关服务器发送的第二用户的Token和第二用户标识;
处理单元501,还用于若确认所述第一API网关服务器未存储所述第二用户的Token,则将所述第二用户的Token和所述第二用户标识存储至本地;所述第二用户的Token为所述第二API网关服务器生成的。
一种可能的实现方式,收发单元502,还用于:接收所述第一API网关服务器的应用服务器发送的应用请求,所述应用请求包括所述第一用户的Token;将所述第一用户的用户信息返回至所述应用服务器;
处理单元501用于根据本地存储的用户Token与用户标识的对应关系,确定所述第一用户的用户标识,并根据所述第一用户的用户标识,在所述用户管理服务器中确定所述第一用户的用户信息。
一种可能的实现方式,第一API网关服务器101,N个第二API网关服务器102-103中分别包括认证鉴权模块,用于认证用户或应用服务器发送的注册请求或应用请求。所述第一API网关服务接收所述注册请求后,将所述注册请求转发至对应的认证鉴权服务模块。
所述认证鉴权服务模块用于Token信息的生成、存储及校验,以及用户权限的验证。在异地部署的场景中,需要在不同地域中分别设置认证鉴权服务模块。其中,所述第一用户首次访问API网关服务器时,需要发送认证请求到所述API网关服务器的认证鉴权服务模块获取访问许可,所述认证鉴权服务模块收到请求后可以在所述认证鉴权服务模块中的认证模块中生成用户Token信息。
如图6所示,本申请实施例提供一种计算设备,包括:处理器601,存储器602,总线603;
处理器601、存储器602通过总线603耦合;
处理器601,用于执行存储器602中存储的计算机程序或指令,以使得所述计算设备执行上述实施例中任一项所述的方法。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如本申请实施例中任一种所述的方法。
本申请实施例中,仅需用户向API网关服务器发送一次注册请求之后,只需携带所述API网关服务器返回的Token,即可在该分布式***中任意分布式的API网关服务器中成功访问,减少了用户发送账户信息的次数,整个消息传递过程仅需要向所述第一用户发送UUID的Token,不需要发送JWT等带有元信息的Token,具有安全可靠的特点,通过将UUID的Token和用户标识发送至第二API网关服务器,可以使得第二API网关服务器在本地就可以对所述Token进行鉴权,使得用户在第二API网关服务器中也可以进行访问,不需要再次生成Token,实现了一处认证,多处访问的效果,提高了用户访问的安全性的同时,大大提高了***的认证和访问效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现、当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述指令可以存储在计算机存储介质中,或者从一个计算机存储介质向另一个计算机存储介质传输,例如,所述指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带、磁光盘(MO)等)、光介质(例如,CD、DVD、BD、HVD等)、或者半导体介质(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(Solid State Disk,SSD))等。本领域内的技术人员应明白,本申请实施例可提供为方法、***、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种API认证的方法,其特征在于,包括:
第一API网关服务器若确定所述第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;第一消息队列代理服务器和所述第一API网关服务器连接,第二消息队列代理服务器和第二API网关服务器连接,所述第一消息队列代理服务器与所述第二消息队列代理服务器为在不同地域中分别搭建的该地域所属的消息队列代理服务器;所述第一消息队列代理服务器和所述第二消息队列代理服务器之间通过配置建立异地传输通道互相连接,用于实现异地服务间的消息传输;所述第一消息队列代理服务器和至少一个第一应用服务器相连接;所述第二消息队列代理服务器和至少一个第二应用服务器相连接;
所述第一API网关服务器通过所述第一消息队列代理服务器向至少一个第二API网关服务器的第二消息队列代理服务器发送所述第一用户的Token和第一用户标识;所述第二API网关服务器的第二消息队列代理服务器用于将所述第一用户的Token和所述第一用户标识传输至所述第二API网关服务器;所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权;具体包括:所述第一用户的应用请求为所述第一用户向所述第二API网关服务器发送的;所述应用请求中包括所述第一用户的Token;所述第二API网关服务器根据所述应用请求向所述应用请求对应的第二应用服务器发送所述应用请求;所述应用服务器通过所述第二API网关服务器验证所述应用请求中的Token的合法性,并对所述应用请求中的Token进行鉴权。
2.如权利要求1所述的方法,其特征在于,所述第一API网关服务器生成所述第一用户的Token之后,还包括:
所述第一API网关服务器根据预先约定的密钥对所述第一用户的Token和所述第一用户标识进行加密;
所述第一API网关服务器向至少一个第二API网关服务器发送所述第一用户的Token和第一用户标识,包括:
所述第一API网关服务器将加密后的所述第一用户的Token和所述第一用户标识,发送至所述至少一个第二API网关服务器。
3.如权利要求1至2任一项所述的方法,其特征在于,所述方法还包括:
所述第一API网关服务器接收所述第二API网关服务器发送的第二用户的Token和第二用户标识;
所述第一API网关服务器若确认所述第一API网关服务器未存储所述第二用户的Token,则将所述第二用户的Token和所述第二用户标识存储至本地;所述第二用户的Token为所述第二API网关服务器生成的。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
所述第一API网关服务器接收所述第一API网关服务器的第一应用服务器发送的应用请求,所述应用请求包括所述第二用户的Token;
所述第一API网关服务器根据本地存储的用户Token与用户标识的对应关系,确定所述第二用户的用户标识,并根据所述第二用户的用户标识,在所述用户管理服务器中确定所述第二用户的用户信息;
所述第一API网关服务器将所述第二用户的用户信息返回至所述第一API网关服务器的第一应用服务器。
5.一种API认证的装置,其特征在于,包括:
处理单元,用于若确定第一API网关服务器未存储第一用户的Token,则根据所述第一用户发起的注册请求,生成所述第一用户的Token;第一消息队列代理服务器和所述第一API网关服务器连接,第二消息队列代理服务器和第二API网关服务器连接,所述第一消息队列代理服务器与所述第二消息队列代理服务器为在不同地域中分别搭建的该地域所属的消息队列代理服务器;所述第一消息队列代理服务器和所述第二消息队列代理服务器之间通过配置建立异地传输通道互相连接,用于实现异地服务间的消息传输;所述第一消息队列代理服务器和至少一个第一应用服务器相连接;所述第二消息队列代理服务器和至少一个第二应用服务器相连接;
收发单元,用于通过所述第一消息队列代理服务器向至少一个第二API网关服务器的第二消息队列代理服务器发送所述第一用户的Token和第一用户标识;所述第二API网关服务器的第二消息队列代理服务器用于将所述第一用户的Token和所述第一用户标识传输至所述第二API网关服务器;所述第一用户的Token和第一用户标识用于所述第二API网关服务器在用户管理服务器中根据所述第一用户标识获得所述第一用户的用户信息,所述第一用户的用户信息用于对所述第一用户的应用请求进行鉴权;具体包括:所述第一用户的应用请求为所述第一用户向所述第二API网关服务器发送的;所述应用请求中包括所述第一用户的Token;所述第二API网关服务器根据所述应用请求向所述应用请求对应的第二应用服务器发送所述应用请求;所述应用服务器通过所述第二API网关服务器验证所述应用请求中的Token的合法性,并对所述应用请求中的Token进行鉴权。
6.如权利要求5所述的装置,其特征在于,所述处理单元还用于:
根据预先约定的密钥对所述第一用户的Token和所述第一用户标识进行加密;
所述收发单元具体用于:将加密后的所述第一用户的Token和所述第一用户标识,发送至所述至少一个第二API网关服务器。
7.如权利要求5至6任一项所述的装置,其特征在于,所述收发单元还用于:接收所述第二API网关服务器发送的第二用户的Token和第二用户标识;
所述处理单元,还用于若确认所述第一API网关服务器未存储所述第二用户的Token,则将所述第二用户的Token和所述第二用户标识存储至本地;所述第二用户的Token为所述第二API网关服务器生成的。
8.如权利要求7所述的装置,其特征在于,所述收发单元,还用于:接收所述第一API网关服务器的第一应用服务器发送的应用请求,所述应用请求包括所述第二用户的Token;将所述第二用户的用户信息返回至所述第一API网关服务器的应用服务器;
所述处理单元,还用于根据本地存储的用户Token与用户标识的对应关系,确定所述第二用户的用户标识,并根据所述第二用户的用户标识,在所述用户管理服务器中确定所述第二用户的用户信息。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如权利要求1至4中任一项所述的方法。
10.一种API认证的计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810576265.4A CN110569638B (zh) | 2018-06-06 | 2018-06-06 | 一种api认证的方法、装置、存储介质及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810576265.4A CN110569638B (zh) | 2018-06-06 | 2018-06-06 | 一种api认证的方法、装置、存储介质及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569638A CN110569638A (zh) | 2019-12-13 |
CN110569638B true CN110569638B (zh) | 2021-08-06 |
Family
ID=68772319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810576265.4A Active CN110569638B (zh) | 2018-06-06 | 2018-06-06 | 一种api认证的方法、装置、存储介质及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569638B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790054B2 (en) | 2020-03-31 | 2023-10-17 | Boe Technology Group Co., Ltd. | Method for license authentication, and node, system and computer-readable storage medium for the same |
CN112367299B (zh) * | 2020-10-16 | 2023-04-18 | 深圳市科漫达智能管理科技有限公司 | 一种应用程序接口api管理的方法以及相关装置 |
CN112751857B (zh) * | 2020-12-28 | 2022-07-12 | 山东浪潮通软信息科技有限公司 | 一种云端应用和企端应用的数据安全交换方法及设备 |
CN114598490B (zh) * | 2021-04-09 | 2024-03-29 | 亚信科技(南京)有限公司 | 基于api网关重定向页面的方法、装置、设备及存储介质 |
CN113726673B (zh) * | 2021-07-13 | 2023-07-18 | 新华三大数据技术有限公司 | 服务网关流控方法、装置、设备及存储介质 |
CN113626840A (zh) * | 2021-07-23 | 2021-11-09 | 曙光信息产业(北京)有限公司 | 接口认证方法、装置、计算机设备和存储介质 |
CN114285699B (zh) * | 2021-12-20 | 2023-06-06 | 徐工汉云技术股份有限公司 | 一种实现终端在分布式网关session唯一的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103188248A (zh) * | 2011-12-31 | 2013-07-03 | 卓望数码技术(深圳)有限公司 | 基于单点登录的身份认证***及方法 |
CN106209749A (zh) * | 2015-05-08 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 单点登录方法及装置、相关设备和应用的处理方法及装置 |
CN106973041A (zh) * | 2017-03-02 | 2017-07-21 | 飞天诚信科技股份有限公司 | 一种颁发身份认证凭据的方法、***及认证服务器 |
-
2018
- 2018-06-06 CN CN201810576265.4A patent/CN110569638B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103188248A (zh) * | 2011-12-31 | 2013-07-03 | 卓望数码技术(深圳)有限公司 | 基于单点登录的身份认证***及方法 |
CN106209749A (zh) * | 2015-05-08 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 单点登录方法及装置、相关设备和应用的处理方法及装置 |
CN106973041A (zh) * | 2017-03-02 | 2017-07-21 | 飞天诚信科技股份有限公司 | 一种颁发身份认证凭据的方法、***及认证服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN110569638A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569638B (zh) | 一种api认证的方法、装置、存储介质及计算设备 | |
CN111373712B (zh) | 用于认证应用程序接口(api)调用者的方法和*** | |
US10320801B2 (en) | Identity proxy to provide access control and single sign on | |
US10667131B2 (en) | Method for connecting network access device to wireless network access point, network access device, and application server | |
CN106209749B (zh) | 单点登录方法及装置、相关设备和应用的处理方法及装置 | |
CN113347206B (zh) | 一种网络访问方法和装置 | |
US9130935B2 (en) | System and method for providing access credentials | |
KR101636028B1 (ko) | 로컬 기능을 갖는 아이덴티티 관리 | |
KR101508360B1 (ko) | 데이터 전송 장치 및 방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 | |
US10148651B2 (en) | Authentication system | |
EP3195523B1 (en) | Methods, devices and management terminals for establishing a secure session with a service | |
CN109344628B (zh) | 区块链网络中可信节点的管理方法,节点及存储介质 | |
US9954839B2 (en) | Systems and methods for providing distributed authentication of service requests by identity management components | |
KR20150142037A (ko) | 사용자에 의해 디바이스에 액세스하기 위한 방법 및 시스템 | |
RU2685975C2 (ru) | Обеспечение безопасности связи с расширенными мультимедийными платформами | |
WO2022100356A1 (zh) | 身份认证***、方法、装置、设备及计算机可读存储介质 | |
US11611541B2 (en) | Secure method to replicate on-premise secrets in a cloud environment | |
CN115865384A (zh) | 中台微服务授权方法、装置、电子设备及存储介质 | |
US11977620B2 (en) | Attestation of application identity for inter-app communications | |
CN115865447A (zh) | 基于区块链的数字产品访问方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |