掌桥专利:专业的专利平台
掌桥专利
首页

基于接口的API网关自动化鉴权方法及系统

文献发布时间:2023-06-29 06:30:04


基于接口的API网关自动化鉴权方法及系统

技术领域

本发明涉及计算机网络认证鉴权技术领域,尤其涉及一种基于接口的API网关自动化鉴权方法及系统。

背景技术

网络服务通常包括客户端和服务端,通过API网关统一接收第三方业务调用接口的需求,根据不同接口的权限,进行一定的校验和逻辑处理,返回对应权限的页面接口数据等。

在现有实际项目场景中,接口各式各样,接口调用方式五花八门,接口接入的数据格式完全无法统一管理,接口权限也是有的覆盖,有的没覆盖,权限验证方式层出不穷,导致接口管理困难,数据质量也参差不齐,作为底层的基础服务时,对上层业务系统接入接口极其不利。

发明内容

本发明所要解决的技术问题是针对现有技术存在的问题,提供一种基于接口的API网关自动化鉴权方法及系统。

为解决上述技术问题,本发明实施例提供一种基于接口的API网关自动化鉴权方法,包括:在统一身份认证系统uac中注册业务系统,配置所述业务系统的系统配置信息并保存在统一身份认证系统和API网关的共享数据库的系统表中;所述业务系统启动后,通过调用统一身份认证系统的接口自动初始化所述业务系统所有需要鉴权的接口的接口权限码到所述共享数据库的权限码表中进行分角色存储;其中,所述接口权限码为所述统一身份认证系统为接口配置的唯一编码;将所述角色赋予给用户或系统,在所述共享数据库中建立对应的赋权关系,且当已赋权过的角色下接口动态增减时,无需再次赋权;根据所述业务系统的系统配置信息和所述赋权关系进行API网关自动化鉴权。

为解决上述技术问题,本发明还提供一种基于接口的API网关自动化鉴权系统,包括:API网关、统一身份认证系统和共享数据库;所述API网关、统一身份认证系统和共享数据库均包括存储器、处理器及存储在所述存储器上的并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述技术方案提供的基于接口的API网关自动化鉴权方法。

本发明的有益效果是:通过统一身份认证系统统一管理所有系统接口和接口权限码,通过接口服务形式为上层业务系统提供标准的、统一的用户身份认证和访问控制,简化了权限鉴权管理的复杂度,简化上层业务系统调用基础服务接口鉴权的流程与逻辑处理复杂度;当已赋权过的角色下接口动态增减时,无需再次赋权,实现了接口的自动化权限赋权;并且通过网关一体化流程能更方便的统计各接口访问次数,展示接口流量等,实现接口统一管理、接口流量数据分析等各需求。

本发明附加的方面及其优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

图1为本发明实施例提供的基于接口的API网关自动化鉴权方法流程图;

图2为本发明实施例提供的系统登录流程的信令交互图;

图3为本发明实施例提供的系统间单点登录流程的信令交互图;

图4为本发明实施例提供的通过API网关进行用户调用接口流程的信令交互图;

图5为本发明实施例提供的接口登出流程的信令交互图;

图6为本发明实施例提供的业务系统间相互调用流程的信令交互图。

具体实施方式

以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。

图1为本发明实施例提供的基于接口的API网关自动化鉴权方法流程图。如图1所示,该方法包括:

S1,在统一身份认证系统uac中注册业务系统,配置业务系统的系统配置信息并保存在统一身份认证系统和API网关的共享数据库的系统表中。

业务系统的系统配置信息可以包括系统名称、系统I D(APPI D)、系统密钥(APPID和APP Secret)、系统编码和系统路由信息。

S2,业务系统启动后,通过调用统一身份认证系统的接口自动初始化业务系统所有需要鉴权的接口的接口权限码到共享数据库的权限码表中进行分角色存储,其中,接口权限码为统一身份认证系统为接口配置的唯一编码。

S3,将角色赋予给用户或系统,在共享数据库中建立对应的赋权关系,且当已赋权过的角色下接口动态增减时,无需再次赋权。

角色即接口权限的集合,接口权限码与系统是所属关系,即接口权限码是只属于本系统的,运维管理员根据实际使用场景,将角色(接口权限集合)赋予用户或系统。如角色a具有业务系统A中接口1、接口3、接口4和接口8的访问权限。假如将角色a赋权给用户b,则用户b具有对系统A中接口1、接口3、接口4和接口8的访问权限。假如将角色a赋权给系统B,则系统B具有对系统A中接口1、接口3、接口4和接口8的访问权限。

当然在系统使用过程中也可以动态新增接口权限,当角色已经赋权给用户或者系统时,在此角色下新增接口权限,则无需再次赋权。

S4,根据业务系统的系统配置信息和赋权关系进行API网关自动化鉴权。

本发明实施例通过统一身份认证系统统一管理所有系统接口和接口权限码,通过接口服务形式为上层业务系统提供标准的、统一的用户身份认证和访问控制,简化了权限鉴权管理的复杂度,简化上层业务系统调用基础服务接口鉴权的流程与逻辑处理复杂度;当已赋权过的角色下接口动态增减时,无需再次赋权,实现了接口的自动化权限赋权;并且通过网关一体化流程能更方便的统计各接口访问次数,展示接口流量等,实现接口统一管理、接口流量数据分析等各需求。

在一个实施例中,根据业务系统的系统配置信息和权限匹配关系进行API网关的自动化鉴权,包括:

S41,API网关接收业务系统前端发送的接口调用请求,当接口调用请求中携带的用户令牌为无效令牌时,则生成有效用户令牌并根据系统配置信息重定向到单点登录页面。

当接口调用请求中携带的用户令牌为无效令牌时,则生成有效用户令牌并根据系统配置信息重定向到单点登录页面,具体包括:

S411,当接口调用请求中携带的用户令牌为无效令牌时,则携带系统编码重定向到uac统一登录页面;

S412,uac统一登录页面查询确定uac后端的会话中不存在用户登录信息时,则确认用户未登录,携带系统编码向uac后端发送用户基本信息;其中,用户登录信息指用户ID、用户名称和用户密码等;

S413,uac后端根据用户基本信息生成有效用户令牌,并在完整跳转ur l上拼装有效用户令牌,向uac统一登录页面反馈完整跳转ur l;

S414,uac统一登录页面携带有效用户令牌和用户基本信息根据完整跳转ur l重定向到业务系统接口;

S415,业务系统接口携带有效用户令牌重定向到单点登录页面,实现用户在业务系统的登录。

S42,API网关接收到业务系统前端发送的携带有效用户令牌的接口调用请求时,根据赋权关系判断用户是否有对待调用接口的访问权限。具体包括如下步骤:

S421,AP I网关接收到业务系统前端发送的携带有效用户令牌的接口调用请求时,则查询共享数据库中存储的赋权关系;

S422,当根据查询结果确定有调用权限时则根据系统路由信息携带系统令牌路由到待调用的业务系统接口;

S423,当待调用的业务系统接口校验确定接收到的系统令牌与本地存储的系统令牌相同时,通过API网关向业务系统前端返回结果数据。

S43,有调用权限时,则从待调用接口获取结果数据反馈给业务系统前端。

在另一个实施例中,根据业务系统的系统配置信息和权限匹配关系进行API网关的自动化鉴权,包括:

S41,API网关接收业务系统前端发送的接口调用请求,当接口调用请求中携带的用户令牌为无效令牌时,则生成有效用户令牌并根据系统配置信息重定向到单点登录页面。

当接口调用请求中携带的用户令牌为无效令牌时,则生成有效用户令牌并根据系统配置信息重定向到单点登录页面,具体包括:

S411,当接口调用请求中携带的用户令牌为无效令牌时,则携带系统编码重定向到uac统一登录页面;

S416,uac统一登录页面查询确定uac后端的会话中存在用户登录信息时,则确认用户已登录,uac统一登录页面根据系统编码向uac后端查询跳转ur l;

S413,uac后端根据用户基本信息生成有效用户令牌,并在完整跳转ur l上拼装有效用户令牌,向uac统一登录页面反馈完整跳转ur l;

S414,uac统一登录页面携带有效用户令牌和用户基本信息根据完整跳转ur l重定向到业务系统接口;

S415,业务系统接口携带有效用户令牌重定向到单点登录页面,实现用户在业务系统的登录。

S42,API网关接收到业务系统前端发送的携带有效用户令牌的接口调用请求时,根据赋权关系判断用户是否有对待调用接口的访问权限。具体包括如下步骤:

S421,API网关接收到业务系统前端发送的携带有效用户令牌的接口调用请求时,则查询共享数据库中存储的赋权关系;

S422,当根据查询结果确定有调用权限时则根据系统路由信息携带系统令牌路由到待调用的业务系统接口;

S423,当待调用的业务系统接口校验确定接收到的系统令牌与本地存储的系统令牌相同时,通过API网关向业务系统前端返回结果数据。

S43,有调用权限时,则从待调用接口获取结果数据反馈给业务系统前端。

下面结合附图2详细描述系统登录流程(即用户令牌无效,且用户状态为未登录状态时登录业务系统的流程)。

1)业务系统前端访问业务系统主页,调用本业务系统的业务接口时,向ngi nx发送接口调用请求;

2)由ngi nx转发接口调用请求到API网关。

3)AP I网关校验接口调用请求中携带的Auth-Token(即用户令牌)是否有效,无效的话携带系统Code(即系统编码)重定向到uac统一登录页面。

4)uac统一登录页面携带cook i e向uac后端发送登录状态查询请求;

5)uac后端在会话sess i on查询登录信息;登录信息包括用户I D、用户名称和用户密码等;

6)若登录信息不存在,则向uac统一登录页面返回“不存在信息”;

7)uac统一登录页面接收用户输入的用户名和密码等用户基本信息,携带系统code向uac后端发送用户名和密码等用户基本信息;

8)uac后端处理权限缓存,生成有效Auth-Token并拼接重定向ur l;

9)返回完整的跳转ur l给uac统一登录页面;

10)uac前端进行页面重定向ur l跳转时,会携带Auth-Token和用户I D,用户账号手机号等信息重定向到待调用的业务系统接口。

需要说明的是,跳转的ur l地址是业务系统后端还是前端,是由uac中配置的登录重定向地址决定的。

11)若重定向到业务系统后端,则业务系统后端返回给业务系统前端Auth-Token以及“登录成功”的信息,并且重定向到单点页面;

12)此时业务系统前端记录Auth-Token,并跳转到主页。

上述实施例中,在统一身份认证系统中记录用户的登录状态,提供用户的Auth-Token给前端保存,使用该Auth-token能够调用相关接口。

可选地,根据第三方系的系统配置信息和权限匹配关系进行API网关的自动化鉴权,还包括:当uac统一登录页面查询到用户已登录时,则根据系统编码向uac后端查询跳转ur l,并根据查询到的完整跳转ur l携用户令牌及用户基本信息重定向到待调用的业务系统接口。

下面结合附图3详细描述系统间单点登录流程(即用户令牌无效,且用户状态为已登录状态时的系统间单点登录流程)。

系统间单点登录是指比如在用户张三已经登录系统A的前提条件下,张三在同一浏览器打开系统B的主页。

因此系统间单点登录的步骤1-5与图2所示的系统登录流程的步骤1-5相同。从第6步骤开始,若uac后端向uac统一登录页面返回系未登录信息,则按照图2所示流程执行“系统登录流程”;若返回已登录信息,则执行如下步骤:

6)uac后端向uac统一登录页面返回系统已登录;

7)uac统一登录页面根据系统code向uac后端发送ur l查询请求;

8)uac后端根据ur l查询请求查询出red i rect_ur l,生成有效auth token,并拼装完整的跳转ur l;

9)uac后端向uac统一登录页面返回完整的跳转ur l;

10)uac统一登录页面携带Auth-Token和用户ID,用户账号手机号等信息根据完整的跳转ur l重定向到待调用的业务系统接口。

需要说明的是,跳转的ur l地址是业务系统后端还是前端,是由uac中配置的登录重定向地址决定的。

11)若重定向到业务系统后端,则业务系统后端返回给业务系统前端Auth-Token以及“登录成功”的信息,并且重定向到单点页面;

12)此时业务系统前端记录Auth-Token,并跳转到主页。

上述实施例中,用户登录一个业务系统后,如果想要打开其他系统的页面,无需再次登录,即只需登录一次,登录一个系统,便可根据权限使用所有接入系统的接口信息。

下面结合附图4详细描述通过API网关进行用户调用接口流程。

1)业务系统前端携带Auth-Token调用后端业务接口,向ngi nx发送接口调用请求;

2)通过ngi nx转发接口调用请求到API网关;

3)API网关验证Auth-Token有效时,查询共享数据库中的赋权关系缓存,判断用户是否具有对待调用接口的访问权限;

4)无效则向业务系统前端返回用户无权限调用;有权限则携带业务系统的Access-Token(即系统令牌)请求路由转发到业务系统;

5)在业务系统后端校验接收到Access-Token与本地存储的Access-Token是否相同;此步骤的目的是为了在业务系统能够有鉴定请求来源的方案,系统令牌相同则说明请求是来自于API网关,如不相同则业务系统需要将请求拒绝;

6)如接收到Access-Token与本地存储的Access-Token相同,则将接口结果数据返回给API网关;

7)API网关将结果数据返回到业务系统前端。

上述实施例中,携带有效authToken即可调用接口获取相关数据。

在另一个实施例中,根据业务系统的系统配置信息和赋权关系进行API网关的自动化鉴权,包括:API网关接收业务系统前端发送的登出接口调用请求时,携带系统编码重定向到uac前端提供的登出页面;uac前端提供的登出页面向uac后端发送携带用户令牌和系统编码的登出接口调用请求;uac后端根据登出接口调用请求重定向到uac登录页面或者配置的登出重定向页面。

下面结合附图5详细描述接口登出流程。

1)业务系统前端携带Auth-Token调用网关提供的登出接口:'/open-uac-gateway/l ogout',向ngi nx发送登出接口调用请求;

2)ngi nx转发登出接口调用请求到API网关。

3)API网关携带系统code,重定向到uac前端的登出页面;

4)uac前端调用注销接口,并携带Auth-Token和系统code;

5)uac后端重定向到uac登录页面或者配置的登出重定向页面。

需要说明的是,登出重定向是地址是:如果uac中有配置登出重定向地址则重定向到配置地址,如果没有配置,则跳转uac统一登录页。

上述实施例中,将统一身份认证系统中的登录状态删除,然后前端页面跳转到统一身份认证统一登录页或者跳转到配置的重定向地址,实现了业务系统的登出流程。

在另一个实施例中,根据业务系统的系统配置信息和权限匹配关系进行API网关的自动化鉴权,包括:

AP I网关接收第一业务系统发送的调用第二业务系统接口的接口调用请求。具体地,接口调用请求的路径为:/gateway/uac中第一业务系统的系统编码/第二业务系统的系统编码+第二业务系统的待调用接口的路径。

根据接口调用请求查询共享数据库的缓存,当第一业务系统具有对第二业务系统的访问权限时,将接口调用请求中携带的第一业务系统的系统令牌转换为第二业务系统的系统令牌,并根据系统路由信息进行路由转发;其中,系统令牌为业务系统通过系统I D和系统密钥从统一身份认证系统中获取的,具有预设有效期,本发明实施例中预设有效期为7200秒。

第二业务系统的待调用接口接收并校验第二接口调用请求中携带系统令牌与本地存储的系统令牌是否匹配,从而鉴定接口来源是否为API网关;当校验结果为匹配时,第二业务系统的待调用接口通过API网关向第一业务系统返回结果数据。

下面结合附图6详细描述系统间相互调用流程。

假如业务系统A调用系统B,系统间交互流程为:

1)业务系统A(接口调用方)使用APPI D和APP Secret向uac发送access-token获取请求。

2)uac获取并验证APPI D和APP Secret,生成业务系统A的access-token并缓存;

3)将access-token返回给业务系统A;

4)业务系统A调用业务系统B接口,向API网关发起接口调用请求,请求的path转为/gateway/uac中发起方系统的系统Code/被调用系统code+真正的接口path;接口调用请求的header中携带业务系统A的access-token;

5)API网关使用缓存进行权限校验,校验通过后进行路由转发,并将header中业务系统A的access-token转换为业务系统B的access-token,进行路由转发;

AP I网关使用缓存进行权限校验具体包括:根据接口调用请求查询共享数据库的缓存,当第一业务系统具有对第二业务系统的访问权限时,将接口调用请求中携带的第一业务系统的系统令牌转换为第二业务系统的系统令牌,并根据系统路由信息进行路由转发。

其中,根据第一业务系统的系统编码和第二业务系统的系统编码查询共享数据库中存储的赋权关系,根据查询结果确定第一业务系统是否具有对第二业务系统的访问权限。

6)API网关调用业务系统B接口;

7)业务系统B接口验证接口调用请求中携带的access-token与本地缓存的access-token是否匹配;

8)若匹配,将调用的结果返回给API网关;

9)网关返回结果给业务系统A。

上述实施例中,实现了系统间接口调用的权限认证。

本发明实施例再列举一个实例详细描述基于接口的自动化网关鉴权实现方法:即同一个环境下,根据产品需求采用共用mysq l数据库方式实现所有接口鉴权管理方法。

方法实现的流程如下,以数据服务引擎data-api系统作为业务系统举例:

在统一身份认证系统uac中,注册新的业务系统data-api系统,配置路由地址(即实际系统的访问地址),获取到data-api系统的APPID和APPSecret,此时,新建的系统编码会同步更新网关缓存,即在网关中生成路由配置。

data-ap i系统后端获取所有接口,在启动后初始化需要鉴权的接口权限码直接落库到uac的mysq l数据库中,从而将按规则编写生成的权限码全都落库到系统系统表中,所有与该系统关联的需要鉴权的接口即可被网关授权管理。

在data-ap i系统的UI界面中配置新的接口,自动映射为http接口后,通过配置该接口是否需要鉴权,将需要鉴权的接口落库在uac的系统接口权限管理库中。

当另外的业务系统B调用data-api系统配置的需要鉴权的接口时,按照“系统间相互调用流程”执行,便可获取到接口返回的最终结果。

Data-ap i验证接口是否来自于网关的验证方法是,来自网关的接口都会带上相应系统的access-token。

本发明实施例中,网关的缓存设计采用Red i s实时数据库与mysq l关系数据库结合,在业务系统新增接口权限时,只需要把需要鉴权的接口存入到权限码表;其次,可调用网关登录接口,将Auth-Token与用户关系缓存;调用网关获取Access-Token接口,将Access-Token与发起方系统编码关系缓存。

统一身份认证系统为每个业务系统提供唯一的系统令牌。统一身份认证系统给每个业务系统提供APPI D和APPSecret密钥,根据APPI D和APPSecret可获取鉴权Access-Token(即系统令牌),业务系统与Access-Token的对应关系会持久化保存并缓存在Red i s中。

网关服务采用的技术手段包含:Spr i ngBoot、Apache shenyu、WebSocket、Docker、Mysq l和Red i s等。

相关术语解释:

统一身份认证系统UAC:是一个内开外闭式开放平台,通过接口服务形式为上层业务系统提供标准的、统一的用户身份认证、访问控制、资源授权管理等功能,并提供业务系统之间互相跳转以及数据交互的身份验证功能,可以帮助管理员安全有效的控制用户对系统资源的访问。

数据服务引擎data-ap i:是一个基于Java的接口快速开发框架,编写接口将通过data-ap i提供的U I界面完成,自动映射为HTTP接口,无需定义Contro l l er、Serv ice、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。

Ng i nx:Ng i nx(eng i ne x)是一个高性能的HTTP和反向代理web服务器,同时也提供了I MAP/POP3/SMTP服务。

本发明实施例实现了基于接口的自动化鉴权网关的方法,鉴权配置极其灵活。对使用人员来说,一次登录,登录一个系统便可根据权限使用所有接入的系统,减少了使用成本;对开发人员来说,权限编码在开发的时候即可存储入权限库,无需多方界面配置或sq l脚本编写,降低了开发成本,提高了开发效率。

另外,使用该网关,既方便了接口统一管理,对接口的访问次数以及接口流量使用的统计也提供了一定的便利。

本发明实施例还提供一种基于接口的API网关自动化鉴权系统,包括:API网关、统一身份认证系统和共享数据库;API网关、统一身份认证系统和共享数据库均包括存储器、处理器及存储在存储器上的并可在处理器上运行的计算机程序,处理器执行程序时实现上述实施例提供的基于接口的API网关自动化鉴权方法。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

相关技术
  • 基于RESTful的鉴权方法、网关及鉴权设备
  • 一种API接口的自动化测试方法
  • 一种基于SketchUp API的自动化三维建筑建模方法与系统
  • 基于Java的API网关登录鉴权的测试方法
  • 基于NetflixZuul的API网关实现鉴权的方法
技术分类

06120116020199