一种微服务架构下对RESTfulAPI统一鉴权的方法技术

技术编号:33787276 阅读:11 留言:0更新日期:2022-06-12 14:42
本发明专利技术涉及一种微服务架构下对RESTful API统一鉴权的方法,具体包括以下步骤:权限配置、用户授权、客户端申请Token、网关鉴权。本发明专利技术基于RBAC权限模型加Token机制,使用通配符加HTTP Method作为权限标识,实现对RESTful API权限的灵活定义,解决了RESTful API统一鉴权困难的问题,同时使用Token机制,避免了现有技术使用JWT(JSON Web Token)机制所带来的权限信息泄露的风险,让各个微服务模块只专注业务逻辑实现,提升了业务服务的开发效率。提升了业务服务的开发效率。提升了业务服务的开发效率。

【技术实现步骤摘要】
一种微服务架构下对RESTful API统一鉴权的方法


[0001]本专利技术属于计算机应用
,具体涉及一种微服务架构下对RESTful API统一鉴权的方法。

技术介绍

[0002]随着微服务架构的流行,越来越多的企业将传统的单体应用微服务化,各个微服务只专注于业务本身的逻辑实现,而将一些公共的逻辑处理放到微服务网关上实现,包括:认证、鉴权等功能,每个服务以RESTful形式将API通过网关提供给客户端调用。
[0003]在微服务流行的时代,认证鉴权方法总体上和之前差不多,但由于场景架构不同,适用于它的方案也有所不同,一般来说有四种方案:一是单点登录(SSO);二是分布式Session方案;三是客户端Token方案;四是客户端Token与API网关结合。现有技术中,如CN110225039B就提供了一种权限模型获取、鉴权方法、网关、服务器以及存储介质,使得权限模型与API请求解耦合;CN113098695也提供了一种基于用户属性的微服务统一权限控制方法,在网关层提供标准化的权限控制接口,便于统一管理,引入用户属性信息细化了资源访问的粒度,提高了权限管理的安全性。但上述技术方案在RESTful架构风格下的可操作性并不高,并不足以解决微服务架构下RESTful API的鉴权问题。

技术实现思路

[0004]针对现有技术的上述不足,本专利技术要解决的技术问题是提供一种微服务架构下对RESTful API统一鉴权的方法,避免RESTful API统一鉴权困难的问题。
[0005]为解决上述技术问题,本专利技术采用如下技术方案:
[0006]一种微服务架构下对RESTful API统一鉴权的方法,具体包括以下步骤:
[0007]S1:权限配置;在数据库中建立用户表、角色表、权限表、用户角色关系表、角色权限关系表,并在权限表中设计权限标识字段;
[0008]S2:用户授权;将步骤S1中所配置的权限与角色相关联,将用户与角色相关联;
[0009]S3:客户端申请Token;客户端通过合法的用户名与密码在微服务网关后所提供的认证服务里获取一个Token,并将该Token及对应的用户的权限信息存储到redis中;
[0010]S4:网关鉴权;微服务网关接收到客户端的访问请求后,进行客户端身份认证并返回认证结果信息以进行逻辑判断,如果判断认证失败,微服务网关返回错误信息给客户端;如果判断为认证成功,进行鉴权处理,如果鉴权结果为客户端无权访问当前API,微服务网关向客户端返回无权访问提示信息;如果鉴权结果为客户端对当前访问的API有权限,微服务网关将所述访问请求转发至后端的微服务模块进行相应的业务逻辑处理。
[0011]进一步完善上述技术方案,所述步骤S1中,
[0012]所述用户表包括用户ID、用户名、密码字段;
[0013]所述角色表包括角色ID、角色名称字段;
[0014]所述权限表包括权限ID、权限标识字段;
[0015]所述用户角色关系表包括用户ID、角色ID字段;
[0016]所述角色权限关系表包括角色ID、权限ID字段。
[0017]进一步地,所述权限表中每个权限标识字段需满足的格式为:URL_PATH:HTTP_METHOD;
[0018]其中,URL_PATH表示RESTful API的访问路径,HTTP_METHOD表示客户端请求该URL_PATH的方式;所述URL_PATH的格式符合Apache Ant样式,所述HTTP_METHOD满足HTTP/1.1协议规范。
[0019]进一步地,所述步骤S2中还包括:
[0020]S21:在所述角色权限关系表中增加角色与权限关联的记录:将角色权限关系表中的角色ID关联至角色表,角色权限关系表中的权限ID关联至权限表;
[0021]S22:在所述用户角色关系表中增加用户与角色关联的记录:将用户角色关系表中的用户ID关联至用户表,用户角色关系表中的角色ID关联至角色表。
[0022]进一步地,所述步骤S3中,微服务网关后的认证服务会提供用户名密码认证API、Token认证API,所述认证服务对客户端输入的用户名和密码进行判断校验,校验通过后,认证服务会提供一个Token,并将所述Token及其对应的用户的权限信息存储到redis中,用于后续业务API通过Token进行鉴权;其中,redis的key为当前Token的值,value为Token对应的用户的权限信息。
[0023]进一步地,所述Token使用UUID来生成,其长度为36位;
[0024]认证服务在生成Token时,通过所属步骤S2所得的用户ID关联查询数据库中的用户角色关系表、角色权限关系表和权限表从而获得该用户的权限列表,将该用户的权限列表以JSON字符串形式存储到redis中,其中,redis的key为当前Token的值,value为Token对应的用户的权限信息。
[0025]进一步地,所述步骤S4中,微服务网关接收到客户端的访问请求后,客户端需将步骤S3所获取的Token的值添加到每个所访问的微服务API的HTTP Header中,且Header的名称为Token,微服务网关从所述Header中获取Token的值并调用认证服务提供的Token认证API进行客户端身份认证,认证服务在redis中查询该Token的值,如果存在则向微服务网关返回认证成功信息及该Token的权限信息;如果不存在则向微服务网关返回认证失败信息;
[0026]微服务网关对接收到的认证服务返回的认证结果信息所进行的逻辑判断具体包括以下步骤:
[0027]S41:获取访问的API路径(request_url_path)和请求方式(request_http_method);
[0028]S42:循环遍历所述权限列表,将权限列表中的每个权限进行标识并按照冒号拆分为数组后进行条件判断,如果条件判断结果为条件满足,则表示对当前访问的API有权限,终止循环,同时微服务网关将该请求转发至后端的微服务模块进行业务逻辑处理;否则继续遍历直至循环结束;
[0029]S43:循环结束后,如果条件判断结果仍为不满足,则表示客户端无权访问当前API,微服务网关则向客户端返回无权访问提示信息。
[0030]进一步地,所述数组均包括两个元素,冒号前的元素用perm_arr[0]表示,冒号后的元素用perm_arr[1]表示;
[0031]所述条件判断包括:
[0032]第一条件:判断perm_arr[0]是否与访问的API路径(request_url_path)相匹配;
[0033]第二条件:判断perm_arr[1]是否包含*或者请求方式(request_http_method);
[0034]第一条件和第二条件同时满足则表示条件判断结果为条件满足。
[0035]相比现有技术,本专利技术具有如下有益效果:
[0036]本专利技术的一种微本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种微服务架构下对RESTful API统一鉴权的方法,其特征在于:具体包括以下步骤:S1:权限配置;在数据库中建立用户表、角色表、权限表、用户角色关系表、角色权限关系表,并在权限表中设计权限标识字段;S2:用户授权;将步骤S1中所配置的权限与角色相关联,将用户与角色相关联;S3:客户端申请Token;客户端通过合法的用户名与密码在微服务网关后所提供的认证服务里获取一个Token,并将该Token及对应的用户的权限信息存储到redis中;S4:网关鉴权;微服务网关接收到客户端的访问请求后,进行客户端身份认证并返回认证结果信息以进行逻辑判断,如果判断认证失败,微服务网关返回错误信息给客户端;如果判断为认证成功,进行鉴权处理,如果鉴权结果为客户端无权访问当前API,微服务网关向客户端返回无权访问提示信息;如果鉴权结果为客户端对当前访问的API有权限,微服务网关将所述访问请求转发至后端的微服务模块进行相应的业务逻辑处理。2.根据权利要求1所述一种微服务架构下对RESTful API统一鉴权的方法,其特征在于:所述步骤S1中,所述用户表包括用户ID、用户名、密码字段;所述角色表包括角色ID、角色名称字段;所述权限表包括权限ID、权限标识字段;所述用户角色关系表包括用户ID、角色ID字段;所述角色权限关系表包括角色ID、权限ID字段。3.根据权利要求2所述一种微服务架构下对RESTful API统一鉴权的方法,其特征在于:所述权限表中每个权限标识字段需满足的格式为:URL_PATH:HTTP_METHOD;其中,URL_PATH表示RESTful API的访问路径,HTTP_METHOD表示客户端请求该URL_PATH的方式;所述URL_PATH的格式符合Apache Ant样式,所述HTTP_METHOD满足HTTP/1.1协议规范。4.根据权利要求1所述一种微服务架构下对RESTful API统一鉴权的方法,其特征在于:所述步骤S2中还包括:S21:在所述角色权限关系表中增加角色与权限关联的记录:将角色权限关系表中的角色ID关联至角色表,角色权限关系表中的权限ID关联至权限表;S22:在所述用户角色关系表中增加用户与角色关联的记录:将用户角色关系表中的用户ID关联至用户表,用户角色关系表中的角色ID关联至角色表。5.根据权利要求3所述一种微服务架构下对RESTful API统一鉴权的方法,其特征在于:所述步骤S3中,微服务网关后的认证服务会提供用户名密码认证API、Token认证API,所述认证服务对客户端输入...

【专利技术属性】
技术研发人员:周小波蓝文良
申请(专利权)人:重庆长安汽车股份有限公司
类型:发明
国别省市:

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

1