一种微服务身份认证和接口鉴权的方法及其系统技术方案

技术编号:23193285 阅读:22 留言:0更新日期:2020-01-24 17:05
本发明专利技术提供一种微服务身份认证和接口鉴权的方法及其系统,把身份验证和接口鉴权拆分成两个独立的token,Usertoken里只配置用户的身份信息,Apptoken里只配置接口权限。每个前端应用配置一个单独的nginx服务器,Apptoken由nginx服务器自动在head中增加,即请求通过nginx后,会同时包含Usertoken和Apptoken,然后传给网关,由网关进行身份认证和接口鉴权。本发明专利技术有效地降低了开发复杂性,提升了安全性,并支持非登录用户直接进行接口鉴权访问。

A method and system of microservice identity authentication and interface authentication

【技术实现步骤摘要】
一种微服务身份认证和接口鉴权的方法及其系统
本专利技术属于微服务架构
,具体涉及一种微服务身份认证和接口鉴权的方法及其系统。
技术介绍
微服务架构(MicroServiceArchitecture,简称MSA)目前越来越成为了主流架构,是软件系统的一种新的架构风格。在微服务系统中,所有的模块功能不再像单体系统部署在一个包内,而是由多个微服务组成,每个微服务都能独立设计、开发、部署,在灵活性方面具有很大优势。由于服务众多,基于微服务的安全访问越来越重要,现有技术的微服务架构的身份认证和接口鉴权的基本方案如图1所示。现有的微服务架构的身份认证和接口鉴权中,基于令牌(Token)的认证是其中的一大类。Token一般会包含用户的相关信息,通过验证Token就可以完成身份校验。Token是在认证服务端(也就是网关)产生的。如果前端使用用户名/密码向认证服务端请求认证,认证服务端认证成功,那么在认证服务端会返回用户令牌Usertoken给前端。前端可以在每次业务请求的时候带上Usertoken证明自己的合法地位。其时序如图2所示。前端A和前端B代表不同的前端,首先由前端向网关发起服务请求,发送的请求服务中包括Usertoken和业务请求,通过网关进行身份验证和接口鉴权,该身份验证包括检验时间戳是否过期、密钥是否正确等。接口鉴权是验证该用户是否有调用服务接口的权限。如果身份验证和接口鉴权通过,则网关会把业务请求转发给后台的服务接口进行业务处理,服务接口如服务A、服务B、服务C等。现有技术中接口的鉴权和身份验证耦合在一起,即接口鉴权是通过给角色赋权限来处理,这样同一个系统如果角色很多,则接口鉴权会非常复杂并且会产生重复。而且现有技术不支持非登录用户的接口访问鉴权,即第三方系统如果访问服务接口,是没有对应人员角色的,也就是不能登录的用户,此时如果只想对接口鉴权是实现不了的。
技术实现思路
有鉴于此,为了解决现有技术的接口鉴权复杂和非登录用户不能进行接口鉴权的问题,本专利技术提供一种基于微服务网关的,同时支持微服务身份认证和接口鉴权分离的方法及其系统,并在使用上有效降低了开发复杂性和提升了安全性,并支持非登录用户直接进行接口鉴权访问。第一方面,本专利技术提供一种微服务身份认证和接口鉴权的方法,将身份验证和接口权鉴拆分成两个独立的令牌,并由网关先进行身份验证,再进行接口权鉴。作为对第一方面的方法的一种改进,还包括对未登陆的用户进行接口权鉴的步骤。作为第一方面的方法的具体实施,包括以下步骤:步骤1、前端发送业务请求和用户令牌Usertoken给单独为其配置的nginx服务器;所述用户令牌Usertoken中配置所述前端的身份信息;步骤2、所述nginx服务器自动在http请求头增加应用令牌Apptoken;所述的应用令牌Apptoken中配置所述前端的接口权限;步骤3、所述nginx服务器将业务请求、所述用户令牌Usertoken和所述应用令牌Apptoken发送给网关;步骤4、网关对用户令牌Usertoken进行身份验证;如果身份验证不通过,则拒绝访问;如果身份验证通过,则到步骤5;步骤5、网关对应用令牌Apptoken进行接口鉴权;如果接口鉴权不通过,则拒绝访问;如果接口鉴权通过,则到步骤6;步骤6、网关将所述业务请求和用户令牌Usertoken发送给对应的服务接口,由服务接口完成前端的业务请求。优选的,所述的对未登陆的用户进行接口权鉴的步骤包括:步骤a、第三方系统申请并得到应用令牌Apptoken;步骤b、第三方系统将应用令牌Apptoken和业务请求一起发给网关;步骤c、网关对应用令牌Apptoken进行接口权鉴,如果接口鉴权不通过,则拒绝访问;如果接口鉴权通过,则到步骤d;步骤d、网关将所述业务请求发送给对应的服务接口,由服务接口完成未登录用户的业务请求。所述的步骤1中的身份信息包括用户名和时间戳。所述的步骤1中的用户令牌Usertoken由网关预先对前端进行身份认证后生成的。所述的步骤4中网关对用户令牌Usertoken进行身份验证包括:网关对用户令牌Usertoken进行解码,若能够解码,并获取到用户令牌Usertoken中包含的身份信息,则证明用户令牌Usertoken是由网关生成并发布的,如果时间戳没有超时,则身份验证通过。优选的,网关在生成用户令牌Usertoken时采用预定加密方式进行加密,验证时采用对应的解密方式进行解密。第二方面,本专利技术提供一种微服务身份认证和接口鉴权系统,包括:前端:发送业务请求和用户令牌Usertoken;网关:进行身份验证和接口鉴权;服务接口:完成前端的业务请求;还包括单独为前端配置的nginx服务器;所述用户令牌Usertoken中配置所述前端的身份信息。优选的,所述nginx服务器自动在http请求头增加应用令牌Apptoken,所述应用令牌Apptoken中配置所述前端的接口权限。本专利技术的有益效果在于:1、简化权限的配置,由不同的角色来配置不同的权限;2、开发简化,应用令牌apptoken由nginx服务器自动添加;3、本专利技术支持非登录用户访问服务接口。附图说明图1为现有技术中的微服务身份认证和接口鉴权的系统示意图;图2为身份验证的时序图;图3为本专利技术实施例二的微服务身份认证和接口鉴权的系统示意图。具体实施方式下面结合附图对本公开实施例进行详细描述。以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。实施例一本专利技术的主要思想是把身份验证和接口鉴权拆分成两个独立的token,即用户令牌Usertsoken和应用令牌Apptoken。Usertoken里只配置用户的身份信息,由业务人员配置。Apptoken里配置接口权限,由系统管理员配置。每个前端应用配置一个单独的nginx服务器,前端应用只访问自己的nginx服务器,请求中只带Usertoken即可。Apptoken由nginx服务器自动在head中增加,即请求通过nginx后,会同时包含Usertoken和Apptoken,然后传给网关,由网关进行身份认证和接口鉴权。上文中Head表示http请求头,用于定义网页的头部,它是所有头部元素本文档来自技高网
...

【技术保护点】
1.一种微服务身份认证和接口鉴权的方法,其特征在于:将身份验证和接口权鉴拆分成两个独立的令牌,并由网关先进行身份验证,再进行接口权鉴。/n

【技术特征摘要】
1.一种微服务身份认证和接口鉴权的方法,其特征在于:将身份验证和接口权鉴拆分成两个独立的令牌,并由网关先进行身份验证,再进行接口权鉴。


2.根据权利要求1所述的微服务身份认证和接口鉴权的方法,其特征在于:还包括对未登陆的用户进行接口权鉴的步骤。


3.根据权利要求1或2所述的微服务身份认证和接口鉴权的方法,其特征在于:具体包括以下步骤:
步骤1、前端发送业务请求和用户令牌Usertoken给单独为其配置的nginx服务器;所述用户令牌Usertoken中配置所述前端的身份信息;
步骤2、所述nginx服务器自动在http请求头增加应用令牌Apptoken;所述的应用令牌Apptoken中配置所述前端的接口权限;
步骤3、所述nginx服务器将业务请求、所述用户令牌Usertoken和所述应用令牌Apptoken发送给网关;
步骤4、网关对用户令牌Usertoken进行身份验证;如果身份验证不通过,则拒绝访问;如果身份验证通过,则到步骤5;
步骤5、网关对应用令牌Apptoken进行接口鉴权;如果接口鉴权不通过,则拒绝访问;如果接口鉴权通过,则到步骤6;
步骤6、网关将所述业务请求和用户令牌Usertoken发送给对应的服务接口,由服务接口完成前端的业务请求。


4.根据权利要求2所述的微服务身份认证和接口鉴权的方法,其特征在于:所述的对未登陆的用户进行接口权鉴的步骤包括:
步骤a、第三方系统申请并得到应用令牌Apptoken;
步骤b、第三方系统将应用令牌Apptoken和业务请求一起发给网关;
步骤c、网关对应用令牌Apptoken进行接口权鉴,如果接口鉴权不通过,则拒绝访问...

【专利技术属性】
技术研发人员:鲍宁张春玮张创伟
申请(专利权)人:北京华宇信息技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1