本发明涉及访问规则领域,尤其涉及微服务的调用鉴权方法、装置、设备及存储介质。
背景技术:
微服务是一个新兴的软件架构,就是将一个大型的单个应用程序和服务拆分为多个微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。
在微服务的架构下,系统会根据业务拆分为多个服务,各自负责单一的业务,因此需要确保各应用程序编程接口(applicationprogramminginterface,api)的安全性,也就是说服务不是开放的,而是需要授权才可访问的,避免接口被不合法的请求所访问。
现有技术中存在多种微服务的鉴权产品,例如令牌token和开放授权oauth。该鉴权机制可以有效地对调用微服务进行鉴权,鉴权流程和调用过程相对复杂,过度关注鉴权细节,业务迭代效率低下,也就是对单体系统进行微服务拆分后,多个微服务采用oauth机制进行调用鉴权,降低业务运行效率。
技术实现要素:
本发明的主要目的在于解决了微服务之间采用oauth机制进行调用鉴权,降低业务运行效率的技术问题。
为实现上述目的,本发明第一方面提供了一种微服务的调用鉴权方法,包括:接收微服务调用请求,所述微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;判断所述调用服务器的微服务地址是否存在所述第一配置信息中;若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称;根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表;根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果;若所述鉴权结果为所述鉴权成功,则将所述待调用的微服务接口对应的响应信息发送到所述调用服务器。
可选的,在本发明第一方面的第一种实现方式中,所述对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系包括:通过预置定时任务按照预置时长或者预置时刻从预置注册中心服务中获取预设的映射列表,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;将所述预设的映射列表按照预置格式进行封装,得到第一配置信息;将所述第一配置信息存储到内存数据库中。
可选的,在本发明第一方面的第二种实现方式中,所述判断所述调用服务器的微服务地址是否存在所述第一配置信息中,包括:从所述内存数据库中读取所述第一配置信息,并对所述第一配置信息进行解析;将所述调用服务器的微服务地址设置为目标值,并在解析后的第一配置信息中查询所述目标值对应的微服务名称;判断所述目标值对应的微服务名称是否为空值;若所述目标值对应的微服务名称是所述空值,则确定所述调用服务器的微服务地址不存在所述第一配置信息中;若所述目标值对应的微服务名称不是所述空值,并且所述目标键为根据预设规则设置的字符串,则确定所述调用服务器的微服务地址存在所述第一配置信息中。
可选的,在本发明第一方面的第三种实现方式中,所述若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称包括:若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从第一配置信息中确定所述目标值对应的微服务名称;将所述目标值对应的微服务名称设置为所述调用服务器的微服务名称。
可选的,在本发明第一方面的第四种实现方式中,所述根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表包括:将微服务的调用鉴权配置前缀和所述待调用的微服务接口按照预置规则进行字符串拼接;根据拼接的字符串读取预置配置文件,得到初始配置信息;根据所述预置微服务的鉴权类型生成目标正则表达式;根据所述目标正则表达式对所述初始配置信息进行过滤和处理,得到第二配置信息,所述第二配置信息包括所述预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表。
可选的,在本发明第一方面的第五种实现方式中,所述根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果,包括:对所述第二配置信息进行解析,得到所述预置微服务的名称列表;根据预置字符串函数比较所述调用服务器的微服务名称和所述预置微服务的名称列表,得到函数返回值;若所述函数返回值等于第一预置值,则确定鉴权结果为鉴权失败;若所述函数返回值大于或者等于第二预置值,则确定所述鉴权结果为鉴权成功;将所述鉴权结果、所述调用服务器的微服务名称和所述第二配置信息记录到预置微服务日志中。
可选的,在本发明第一方面的第六种实现方式中,所述获取微服务调用请求,并解析所述微服务调用请求,得到调用服务器的微服务地址和待调用的微服务接口之前,所述微服务的调用鉴权方法还包括:设置微服务的调用鉴权标志,所述微服务的调用鉴权标志包括第一预置标志和第二预置标志;根据所述微服务的调用鉴权标志判断是否进行免鉴权访问;若所述微服务的调用鉴权标志为所述第一预置标志,则确定进行免鉴权访问;若所述微服务的调用鉴权标志为所述第二预置标志,则确定进行鉴权访问。
本发明第二方面提供了一种微服务的调用鉴权装置,包括:接收单元,用于接收微服务调用请求,所述微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;封装单元,用于对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;第一判断单元,用于判断所述调用服务器的微服务地址是否存在所述第一配置信息中;处理单元,若所述调用服务器的微服务地址存在所述第一配置信息中,则用于根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称;解析单元,用于根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表;鉴权单元,用于根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果;发送单元,若所述鉴权结果为所述鉴权成功,则用于将所述待调用的微服务接口对应的响应信息发送到所述调用服务器。
可选的,在本发明第二方面的第一种实现方式中,所述封装单元具体用于:通过预置定时任务按照预置时长或者预置时刻从预置注册中心服务中获取预设的映射列表,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;将所述预设的映射列表按照预置格式进行封装,得到第一配置信息;将所述第一配置信息存储到内存数据库中。
可选的,在本发明第二方面的第二种实现方式中,所述第一判断单元具体用于:从所述内存数据库中读取所述第一配置信息,并对所述第一配置信息进行解析;将所述调用服务器的微服务地址设置为目标值,并在解析后的第一配置信息中查询所述目标值对应的微服务名称;判断所述目标值对应的微服务名称是否为空值;若所述目标值对应的微服务名称是所述空值,则确定所述调用服务器的微服务地址不存在所述第一配置信息中;若所述目标值对应的微服务名称不是所述空值,并且所述目标值对应的微服务名称为根据预设规则设置的字符串,则确定所述调用服务器的微服务地址存在所述第一配置信息中。
可选的,在本发明第二方面的第三种实现方式中,所述处理单元具体用于:若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从第一配置信息中确定所述目标值对应的微服务名称;将所述目标值对应的微服务名称设置为所述调用服务器的微服务名称。
可选的,在本发明第二方面的第四种实现方式中,所述封装单元具体用于:将预置微服务的调用鉴权配置前缀和所述待调用的微服务接口按照预置规则进行字符串拼接;根据拼接的字符串读取预置配置文件,得到初始配置信息;根据所述预置微服务的鉴权类型生成目标正则表达式;根据所述目标正则表达式对所述初始配置信息进行过滤和处理,得到第二配置信息,所述第二配置信息包括所述预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表。
可选的,在本发明第二方面的第五种实现方式中,所述鉴权单元具体用于:对所述第二配置信息进行解析,得到所述预置微服务的名称列表;根据预置字符串函数比较所述调用服务器的微服务名称和所述预置微服务的名称列表,得到函数返回值;若所述函数返回值等于第一预置值,则确定鉴权结果为鉴权失败;若所述函数返回值大于或者等于第二预置值,则确定所述鉴权结果为鉴权成功;将所述鉴权结果、所述调用服务器的微服务名称和所述第二配置信息记录到预置微服务日志中。
可选的,在本发明第二方面的第六种实现方式中,所述微服务的调用鉴权装置还包括:设置单元,用于设置微服务的调用鉴权标志,所述微服务的调用鉴权标志包括第一预置标志和第二预置标志;第二判断单元,用于根据所述微服务的调用鉴权标志判断是否进行免鉴权访问;第一确定单元,若所述微服务的调用鉴权标志为所述第一预置标志,则用于确定进行免鉴权访问;第二确定单元,若所述微服务的调用鉴权标志为所述第二预置标志,则用于确定进行鉴权访问。
本发明第三方面提供了一种微服务的调用鉴权设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;所述至少一个处理器调用所述存储器中的所述指令,以使得所述微服务的调用鉴权设备执行上述第一方面所述的微服务的调用鉴权方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的微服务的调用鉴权方法。
本发明提供的技术方案中,接收微服务调用请求,所述微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;判断所述调用服务器的微服务地址是否存在所述第一配置信息中;若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称;根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表;根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果;若所述鉴权结果为所述鉴权成功,则将所述待调用的微服务接口对应的响应信息发送到所述调用服务器。本发明实施例中,通过调用服务器的微服务地址从注册中心服务的配置中确定调用服务器的微服务名称,根据调用服务器的微服务名称和预置配置信息进行鉴权,得到鉴权结果,提高微服务的调用鉴权效率和业务运行效率。
附图说明
图1为本发明实施例中微服务的调用鉴权方法的一个实施例示意图;
图2为本发明实施例中微服务的调用鉴权方法的另一个实施例示意图;
图3为本发明实施例中微服务的调用鉴权装置的一个实施例示意图;
图4为本发明实施例中微服务的调用鉴权装置的另一个实施例示意图;
图5为本发明实施例中微服务的调用鉴权设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种微服务的调用鉴权方法、装置、设备及存储介质,用于通过调用服务器的微服务地址从注册中心服务的配置中确定调用服务器的微服务名称,根据调用服务器的微服务名称和预置配置信息进行鉴权,得到鉴权结果,提高微服务的调用鉴权效率和业务运行效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中微服务的调用鉴权方法的一个实施例包括:
101、接收微服务调用请求,微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;
服务器接收微服务调用请求,微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口。例如,调用服务器的微服务为a,调用服务器的微服务地址为10.0.0.1,待调用的微服务为b,待调用的微服务接口为/demo。
需要说明的是,微服务使用一套小服务来开发单个应用,每个服务运行在各自进程中,微服务之间使用轻量级机制通信,例如,支持超文本传输协议的应用程序编程接口,微服务基于实际业务进行构建,并能够通过自动化部署机制进行独立部署,可以采用不同的编程语言实现和不同的数据存储技术进行集中式管理。
102、对预设的映射列表进行封装,得到第一配置信息,预设的映射列表用于指示微服务名称与微服务地址的映射关系;
服务器对预设的映射列表进行封装,得到第一配置信息,预设的映射列表用于指示微服务名称与微服务地址的映射关系。进一步地,服务器从预置注册中心服务中获取预设的映射列表,例如,被调用的微服务b每隔30秒定时发送获取预设的映射列表请求到注册中心,得到微服务名称与微服务地址的映射列表如下所示:
{"microservera":["10.0.0.1:2233","10.0.0.2:2233"],
"microserverb":["10.0.1.1:4455","10.0.1.2:4455"]};
其中,微服务名称和微服务地址是一对多的关系。
需要说明的是,预置注册中心服务是微服务架构中的通讯录,它记录了微服务名称和微服务地址的映射关系,在分布式架构中,不同微服务统一在注册中心服务进行注册。服务器定时从预置注册中心服务获取微服务名称和网络协议地址列表,能够更新已缓存的微服务名称与微服务地址的映射列表。
103、判断调用服务器的微服务地址是否存在第一配置信息中;
服务器判断调用服务器的微服务地址是否存在第一配置信息中。例如,调用服务器的微服务地址为10.0.1.1,第一配置信息中包括10.0.1.1,则服务器确定调用服务器的微服务地址存在第一配置信息中,并执行步骤104。
可以理解的是,服务器定时更新第一配置信息,因为微服务按照预置时长对预置注册中心服务发送心跳请求,同时预置注册中心服务会接收心跳请求,当预置注册中心服务在预置时长内没有接收到心跳请求时,则确定该微服务死亡,删除该微服务名称和该微服务地址,相应的,第一配置信息中也会将该微服务名称和该微服务地址进行删除。
104、若调用服务器的微服务地址存在第一配置信息中,则根据调用服务器的微服务地址从第一配置信息中读取调用服务器的微服务名称;
若调用服务器的微服务地址存在第一配置信息中,则服务器根据调用服务器的微服务地址从第一配置信息中读取调用服务器的微服务名称。例如,预设的映射列表为{"microservera":["10.0.0.1:2233","10.0.0.2:2233"],
"microserverb":["10.0.1.1:4455","10.0.1.2:4455"]},调用服务器的微服务地址为10.0.0.1:2233,服务器确定10.0.0.1:2233对应的microservera为调用服务器的微服务名称。
105、根据待调用的微服务接口从预置配置文件中解析得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表;
服务器根据待调用的微服务接口从预置配置文件中解析得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表。其中,预置配置文件为bootstrap.properties文件。例如,服务器在bootstrap.properties配置msa调用鉴权信息如下所示:
interfaceauth.authmap./demo={"type":"m2m","serviceid":"microserver1,microserver2"},服务器解析得到第二配置信息如表1所示:
表1:第二配置信息表
106、根据调用服务器的微服务名称和第二配置信息进行鉴权,得到鉴权结果;
服务器根据调用服务器的微服务名称和第二配置信息进行鉴权,得到鉴权结果。其中,鉴权是指验证微服务之间是否能够正常调用。具体的,服务器判断调用服务器的微服务名称是否存在第二配置信息中,进一步地,服务器判断调用服务器的微服务名称是否存在预置微服务的名称列表中;若调用服务器的微服务名称不存在预置微服务的名称列表中,则服务器确定鉴权结果为鉴权失败;若调用服务器的微服务名称存在预置微服务的名称列表中,则服务器确定鉴权结果为鉴权成功,并执行步骤107。
107、若鉴权结果为鉴权成功,则将待调用的微服务接口对应的响应信息发送到调用服务器。
若鉴权结果为鉴权成功,则服务器将待调用的微服务接口对应的响应信息发送到调用服务器。例如,msa(也为microservera)调用msb(也为microserverb)的接口/demo,msb在预置配置文件中配置如下配置即可实现接口/demo只给msa调用,其他调用服务器进行调用会提示鉴权失败,服务器鉴权成功后将/demo对应的响应信息发送到调用服务器,调用服务器也是微服务,进一步实现微服务之间的调用鉴权。
本发明实施例中,通过调用服务器的微服务地址从注册中心服务的配置中确定调用服务器的微服务名称,根据调用服务器的微服务名称和预置配置信息进行鉴权,得到鉴权结果,提高微服务的调用鉴权效率和业务运行效率。
请参阅图2,本发明实施例中微服务的调用鉴权方法的另一个实施例包括:
201、获取微服务的调用鉴权标志,微服务的调用鉴权标志包括第一预置标志和第二预置标志;
服务器获取微服务的调用鉴权标志,微服务的调用鉴权标志包括第一预置标志和第二预置标志,其中,第一用于指示微服务的调用需要进行免鉴权访问,也就是直接进行调用请求,不需要鉴权,例如,第一鉴权标志包括00、10;第二预置标志用于指示对微服务的调用请求进行鉴权访问,例如,第二鉴权标志包括01、11,具体此处不做限定。进一步地,服务器设置微服务的调用鉴权标志,微服务的调用鉴权标志包括第一预置标志和第二预置标志;服务器根据微服务的调用鉴权标志判断是否进行免鉴权访问;若微服务的调用鉴权标志为第一预置标志,则服务器确定进行免鉴权访问;若微服务的调用鉴权标志为第二预置标志,则服务器确定进行鉴权访问,执行步骤202。
可以理解的是,根据实际业务情况设置微服务的调用鉴权标志,该微服务的调用鉴权标志存储在预置文件或者预置数据表中,可选的,微服务的调用鉴权标志也可以使用其他数据或者标识字符串表示,具体此处不做限定。
202、当微服务的调用鉴权标志为第一预置标志时,接收微服务调用请求,微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口。
当微服务的调用鉴权标志为第一预置标志时,服务器接收微服务调用请求,微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口。具体的,服务器接收微服务调用请求,该微服务调用请求包括超文本传输协议请求头,该超文本传输协议请求头包括调用服务器的微服务地址和待调用的微服务接口;服务器对微服务调用请求生成httpservletrequest对象,httpservletrequest对象包括getremotehost()函数和getrequesturi()函数;服务器通过getremotehost()函数从超文本传输协议请求头中获取调用服务器的微服务地址;服务器通过getrequesturi()函数从超文本传输协议请求头中获取待调用的微服务接口。
举例说明,微服务a和微服务b各包括两个微服务实例,其中,微服务a中两个微服务实例的ip为10.0.0.1和10.0.0.2,微服务b的两个微服务实例的ip为10.0.1.1,10.0.1.2。当微服务a向微服务b发出微服务调用请求,并且该调用请求到达微服务b的任一实例时,服务器通过设置过滤器拦截httpservletrequest对象,再通过如下方式获取本次调用请求的调用服务器的网络协议地址和待调用的微服务接口:
stringremoteip=httpservletrequest.getremotehost();
stringuri=request.getrequesturi()。
进一步地,当微服务的调用鉴权标志为第一预置标志时,用于指示当预置注册中心服务异常时,微服务的调用请求执行免鉴权访问,也就是说不需要进行鉴权,直接调用。其中,服务器根据微服务的调用鉴权标志判断是否进行免鉴权访问,具体的,服务器对微服务的调用鉴权标志与第一预置标志或者第二预置标志进行比较;当微服务的调用鉴权标志与第二预置标志相等时,服务器确定微服务的调用鉴权标志为第二预置标志;当微服务的调用鉴权标志与第一预置标志相等时,服务器确定微服务的调用鉴权标志为第一预置标志。
203、对预设的映射列表进行封装,得到第一配置信息,预设的映射列表用于指示微服务名称与微服务地址的映射关系;
服务器对预设的映射列表进行封装,得到第一配置信息,预设的映射列表用于指示微服务名称与微服务地址的映射关系。具体的,服务器通过预置定时任务按照预置时长或者预置时刻从预置注册中心服务中获取预设的映射列表,预设的映射列表包括微服务名称与微服务地址的映射列表,例如,被调用的微服务b每隔30秒定时发送获取映射列表请求到注册中心,得到微服务名称与微服务地址的映射列表如下所示:
{"microservera":["10.0.0.1:2233","10.0.0.2:2233"],
"microserverb":["10.0.1.1:4455","10.0.1.2:4455"]};
其中,微服务名称和微服务地址是一对多的关系。
其次,服务器将预设的的映射列表按照预置格式进行封装,得到第一配置信息;然后,服务器将第一配置信息存储到内存数据库中,进一步地,服务器通过远程字典服务(remotedictionaryserver,redis)对第一配置信息进行缓存,redis为内存数据库。
需要说明的是,预置注册中心服务是微服务架构中的通讯录,它记录了微服务名称和微服务地址的映射关系,在分布式架构中,不同的微服务统一注册在注册中心服务中。服务器定时从预置注册中心服务中获取微服务名称和网络协议地址列表,并更新已缓存在内存数据库中的微服务名称与微服务地址的映射列表。
204、判断调用服务器的微服务地址是否存在第一配置信息中;
服务器判断调用服务器的微服务地址是否存在第一配置信息中。具体的,服务器从内存数据库中读取第一配置信息,并对第一配置信息进行解析;服务器将调用服务器的微服务地址设置为目标值,并在解析后的第一配置信息中查询目标值对应的微服务名称;服务器判断目标值对应的微服务名称是否为空值;若目标值对应的微服务名称是空值,则服务器确定调用服务器的微服务地址不存在第一配置信息中;若目标值对应的微服务名称不是空值,并且目标值对应的微服务名称为根据预设规则设置的字符串,则服务器确定调用服务器的微服务地址存在第一配置信息中。
可以理解的是,内存数据库就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。因此,服务器在内存数据库中读取数据更快速,微服务运行效率更高。
205、若调用服务器的微服务地址不存在第一配置信息中,则确定鉴权失败;
若调用服务器的微服务地址不存在第一配置信息中,则确定鉴权失败,也就是说当检测到调用服务器的微服务地址不存在第一配置信息中时,表示微服务调用请求为无效请求,进一步地,当服务器确定鉴权失败时,服务器将对应的微服务调用请求、调用服务器的微服务地址、待调用的微服务接口、鉴权时刻以及鉴权失败原因记录到预置数据表中,便于统计分析;同时,服务器执行步骤209。
206、若调用服务器的微服务地址存在第一配置信息中,则根据调用服务器的微服务地址从第一配置信息中读取调用服务器的微服务名称;
若调用服务器的微服务地址存在第一配置信息中,则服务器根据调用服务器的微服务地址从第一配置信息中读取调用服务器的微服务名称。进一步地,若调用服务器的微服务地址存在第一配置信息中,则服务器根据调用服务器的微服务地址从第一配置信息中确定目标值对应的微服务名称;服务器将目标值对应的微服务名称设置为调用服务器的微服务名称,例如,预设的映射列表包括{"microservera":["10.0.0.1:2233","10.0.0.2:2233"]和"microserverb":["10.0.1.1:4455","10.0.1.2:4455"]},其中,调用服务器的微服务地址为10.0.0.1:2233,服务器确定10.0.0.1:2233对应的microservera为调用服务器的微服务名称。
207、根据待调用的微服务接口从预置配置文件中解析得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表;
服务器根据微服务的鉴权类型从预置配置文件中解析得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表。其中,预置配置文件为bootstrap.properties文件。具体的,服务器将预置微服务的调用鉴权配置前缀和待调用的微服务接口按照预置规则进行字符串拼接;服务器根据拼接的字符串读取预置配置文件,得到初始配置信息;服务器根据预置微服务的鉴权类型生成目标正则表达式;服务器根据目标正则表达式对初始配置信息进行过滤和处理,得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表。例如,服务器在bootstrap.properties配置msa调用鉴权信息如下所示:
interfaceauth.authmap./demo={"type":"m2m","serviceid":"microserver1,microserver2"},进一步地,服务器解析得到第二配置信息如表1所示。
208、根据调用服务器的微服务名称和第二配置信息进行鉴权,得到鉴权结果;
服务器根据调用服务器的微服务名称和第二配置信息进行鉴权,得到鉴权结果。其中,鉴权是指验证微服务之间是否能够正常调用。具体的,服务器对第二配置信息进行解析,得到预置微服务的名称列表;服务器根据预置字符串函数比较调用服务器的微服务名称和预置微服务的名称列表,得到函数返回值,例如,预置微服务的名称列表为microserver1,microserver2,预置字符串函数为indexof(),若调用服务器的微服务名称为microserver1,则服务器得到函数返回值为0;若调用服务器的微服务名称为microserver2,则服务器得到函数返回值为13;若调用服务器的微服务名称为microserver3,则服务器得到函数返回值为-1;若函数返回值等于第一预置值,则确定鉴权结果为鉴权失败,服务器执行步骤209,其中,第一预置值包括-1;若函数返回值大于或者等于第二预置值,则服务器确定鉴权结果为鉴权成功,服务器执行步骤210,其中,第二预置值包括0;服务器将鉴权结果、调用服务器的微服务名称和第二配置信息记录到预置微服务日志中。
209、若鉴权结果为鉴权失败,则通过邮件方式或者短信方式发送告警信息;
若鉴权结果为鉴权失败,则服务器通过邮件方式或者短信方式发送告警信息,具体的,服务器从预置数据表中读取目标人员的邮箱地址或者手机号码;服务器根据目标人员的邮箱地址或者手机号码发送告警信息,以便于目标人员及时响应和处理。
可选的,服务器定期对鉴权失败的微服务调用请求进行统计分析,得到分析报表,便于追踪鉴权失败问题。
210、若鉴权结果为鉴权成功,则将待调用的微服务接口对应的响应信息发送到调用服务器。
若鉴权结果为鉴权成功,则服务器将待调用的微服务接口对应的响应信息发送到调用服务器。例如,msa(microservera)调用msb(microserverb)的接口/demo,msb在预置配置文件中配置如下配置即可实现接口/demo只给msa调用,其他调用服务器调用会失败,具体如下所示:
interfaceauth.authmap./demo={"type":"m2m","serviceid":"msa"}。服务器鉴权成功后将/demo对应的响应信息发送到调用服务器,调用服务器也是微服务,进一步实现微服务之间的调用鉴权。
本发明实施例中,通过调用服务器的微服务地址从注册中心服务的配置中确定调用服务器的微服务名称,根据调用服务器的微服务名称和预置配置信息进行鉴权,得到鉴权结果,提高微服务的调用鉴权效率和业务运行效率。
上面对本发明实施例中微服务的调用鉴权方法进行了描述,下面对本发明实施例中微服务的调用鉴权装置进行描述,请参阅图3,本发明实施例中微服务的调用鉴权装置的一个实施例包括:
接收单元301,用于接收微服务调用请求,微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;
封装单元302,用于对预设的映射列表进行封装,得到第一配置信息,预设的映射列表用于指示微服务名称与微服务地址的映射关系;
第一判断单元303,用于判断调用服务器的微服务地址是否存在第一配置信息中;
处理单元304,若调用服务器的微服务地址存在第一配置信息中,则用于根据调用服务器的微服务地址从第一配置信息中读取调用服务器的微服务名称;
解析单元305,用于根据待调用的微服务接口从预置配置文件中解析得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表;
鉴权单元306,用于根据调用服务器的微服务名称和第二配置信息进行鉴权,得到鉴权结果;
发送单元307,若鉴权结果为鉴权成功,则用于将待调用的微服务接口对应的响应信息发送到调用服务器。
本发明实施例中,通过调用服务器的微服务地址从注册中心服务的配置中确定调用服务器的微服务名称,根据调用服务器的微服务名称和预置配置信息进行鉴权,得到鉴权结果,提高微服务的调用鉴权效率和业务运行效率。
请参阅图4,本发明实施例中微服务的调用鉴权装置的另一个实施例包括:
接收单元301,用于接收微服务调用请求,微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;
封装单元302,用于对预设的映射列表进行封装,得到第一配置信息,预设的映射列表用于指示微服务名称与微服务地址的映射关系;
第一判断单元303,用于判断调用服务器的微服务地址是否存在第一配置信息中;
处理单元304,若调用服务器的微服务地址存在第一配置信息中,则用于根据调用服务器的微服务地址从第一配置信息中读取调用服务器的微服务名称;
解析单元305,用于根据待调用的微服务接口从预置配置文件中解析得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表;
鉴权单元306,用于根据调用服务器的微服务名称和第二配置信息进行鉴权,得到鉴权结果;
发送单元307,若鉴权结果为鉴权成功,则用于将待调用的微服务接口对应的响应信息发送到调用服务器。
可选的,封装单元302还可以具体用于:
通过预置定时任务按照预置时长或者预置时刻从预置注册中心服务中获取预设的映射列表,预设的映射列表用于指示微服务名称与微服务地址的映射关系;
将预设的映射列表按照预置格式进行封装,得到第一配置信息;
将第一配置信息存储到内存数据库中。
可选的,第一判断单元303还可以具体用于:
从内存数据库中读取第一配置信息,并对第一配置信息进行解析;
将调用服务器的微服务地址设置为目标值,并在解析后的第一配置信息中查询目标值对应的微服务名称;
判断目标值对应的微服务名称是否为空值;
若目标值对应的微服务名称是空值,则确定调用服务器的微服务地址不存在第一配置信息中;
若目标值对应的微服务名称不是空值,并且目标键为根据预设规则设置的字符串,则确定调用服务器的微服务地址存在第一配置信息中。
可选的,处理单元304还可以具体用于:
若调用服务器的微服务地址存在第一配置信息中,则根据调用服务器的微服务地址从第一配置信息中确定目标值对应的微服务名称;
将目标值对应的微服务名称设置为调用服务器的微服务名称。
可选的,解析单元305还可以具体用于:
将微服务的调用鉴权配置前缀和待调用的微服务接口按照预置规则进行字符串拼接;
根据拼接的字符串读取预置配置文件,得到初始配置信息;
根据微服务的鉴权类型生成目标正则表达式;
根据目标正则表达式对初始配置信息进行过滤和处理,得到第二配置信息,第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、预置微服务的鉴权类型和预置微服务的名称列表。
可选的,鉴权单元306还可以具体用于:
对第二配置信息进行解析,得到预置微服务的名称列表;
根据预置字符串函数比较调用服务器的微服务名称和预置微服务的名称列表,得到函数返回值;
若函数返回值等于第一预置值,则确定鉴权结果为鉴权失败;
若函数返回值大于或者等于第二预置值,则确定鉴权结果为鉴权成功;
将鉴权结果、调用服务器的微服务名称和第二配置信息记录到预置微服务日志中。
可选的,微服务的调用鉴权装置还包括:
设置单元308,用于获取微服务的调用鉴权标志,微服务的调用鉴权标志包括第一预置标志和第二预置标志;
第二判断单元309,用于根据微服务的调用鉴权标志判断是否进行免鉴权访问;
第一确定单元310,若微服务的调用鉴权标志为第一预置标志,则用于确定进行免鉴权访问;
第二确定单元311,若微服务的调用鉴权标志为第二预置标志,则用于确定进行鉴权访问。
本发明实施例中,通过调用服务器的微服务地址从注册中心服务的配置中确定调用服务器的微服务名称,根据调用服务器的微服务名称和预置配置信息进行鉴权,得到鉴权结果,提高微服务的调用鉴权效率和业务运行效率。
上面图3和图4从模块化功能实体的角度对本发明实施例中的微服务的调用鉴权装置进行详细描述,下面从硬件处理的角度对本发明实施例中微服务的调用鉴权设备进行详细描述。
图5是本发明实施例提供的一种微服务的调用鉴权设备的结构示意图,该微服务的调用鉴权设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对微服务的调用鉴权设备中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在微服务的调用鉴权设备500上执行存储介质508中的一系列指令操作。
微服务的调用鉴权设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5中示出的微服务的调用鉴权设备结构并不构成对微服务的调用鉴权设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
1.一种微服务的调用鉴权方法,其特征在于,包括:
接收微服务调用请求,所述微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;
对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;
判断所述调用服务器的微服务地址是否存在所述第一配置信息中;
若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称;
根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表;
根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果;
若所述鉴权结果为所述鉴权成功,则将所述待调用的微服务接口对应的响应信息发送到所述调用服务器。
2.根据权利要求1所述的微服务的调用鉴权方法,其特征在于,所述对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系,包括:
通过预置定时任务按照预置时长或者预置时刻从预置注册中心服务中获取预设的映射列表,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;
将所述预设的映射列表按照预置格式进行封装,得到第一配置信息;
将所述第一配置信息存储到内存数据库中。
3.根据权利要求2所述的微服务的调用鉴权方法,其特征在于,所述判断所述调用服务器的微服务地址是否存在所述第一配置信息中,包括:
从所述内存数据库中读取所述第一配置信息,并对所述第一配置信息进行解析;
将所述调用服务器的微服务地址设置为目标值,并在解析后的第一配置信息中查询所述目标值对应的微服务名称;
判断所述目标值对应的微服务名称是否为空值;
若所述目标值对应的微服务名称是所述空值,则确定所述调用服务器的微服务地址不存在所述第一配置信息中;
若所述目标值对应的微服务名称不是所述空值,并且所述目标值对应的微服务名称为根据预设规则设置的字符串,则确定所述调用服务器的微服务地址存在所述第一配置信息中。
4.根据权利要求3所述的微服务的调用鉴权方法,其特征在于,所述若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称,包括:
若所述调用服务器的微服务地址存在所述第一配置信息中,则根据所述调用服务器的微服务地址从第一配置信息中确定所述目标值对应的微服务名称。
将所述目标值对应的微服务名称设置为所述调用服务器的微服务名称。
5.根据权利要求1所述的微服务的调用鉴权方法,其特征在于,所述根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表,包括:
将预置微服务的调用鉴权配置前缀和所述待调用的微服务接口按照预置规则进行字符串拼接;
根据拼接的字符串读取预置配置文件,得到初始配置信息;
根据所述预置微服务的鉴权类型生成目标正则表达式;
根据所述目标正则表达式对所述初始配置信息进行过滤和处理,得到第二配置信息,所述第二配置信息包括所述预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表。
6.根据权利要求1所述的微服务的调用鉴权方法,其特征在于,所述根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果包括:
对所述第二配置信息进行解析,得到所述预置微服务的名称列表;
根据预置字符串函数比较所述调用服务器的微服务名称和所述预置微服务的名称列表,得到函数返回值;
若所述函数返回值等于第一预置值,则确定鉴权结果为鉴权失败;
若所述函数返回值大于或者等于第二预置值,则确定所述鉴权结果为鉴权成功;
将所述鉴权结果、所述调用服务器的微服务名称和所述第二配置信息记录到预置微服务日志中。
7.根据权利要求1-6中任一项所述的微服务的调用鉴权方法,其特征在于,所述获取微服务调用请求,并解析所述微服务调用请求,得到调用服务器的微服务地址和待调用的微服务接口之前,所述微服务的调用鉴权方法还包括:
设置微服务的调用鉴权标志,所述微服务的调用鉴权标志包括第一预置标志和第二预置标志;
根据所述微服务的调用鉴权标志判断是否进行免鉴权访问;
若所述微服务的调用鉴权标志为所述第一预置标志,则确定进行免鉴权访问;
若所述微服务的调用鉴权标志为所述第二预置标志,则确定进行鉴权访问。
8.一种微服务的调用鉴权装置,其特征在于,所述微服务的调用鉴权装置包括:
接收单元,用于接收微服务调用请求,所述微服务调用请求包括调用服务器的微服务地址和待调用的微服务接口;
封装单元,用于对预设的映射列表进行封装,得到第一配置信息,所述预设的映射列表用于指示微服务名称与微服务地址的映射关系;
第一判断单元,用于判断所述调用服务器的微服务地址是否存在所述第一配置信息中;
处理单元,若所述调用服务器的微服务地址存在所述第一配置信息中,则用于根据所述调用服务器的微服务地址从所述第一配置信息中读取所述调用服务器的微服务名称;
解析单元,用于根据所述待调用的微服务接口从预置配置文件中解析得到第二配置信息,所述第二配置信息包括预置微服务的调用鉴权配置前缀、支持通配符的调用接口、所述预置微服务的鉴权类型和所述预置微服务的名称列表;
鉴权单元,用于根据所述调用服务器的微服务名称和所述第二配置信息进行鉴权,得到鉴权结果;
发送单元,若所述鉴权结果为所述鉴权成功,则用于将所述待调用的微服务接口对应的响应信息发送到所述调用服务器。
9.一种微服务的调用鉴权设备,其特征在于,所述微服务的调用鉴权设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述微服务的调用鉴权设备执行如权利要求1-7中任意一项所述的微服务的调用鉴权方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述的微服务的调用鉴权方法。
技术总结