技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于Redis的API网关快速鉴权方法  >  正文

一种基于Redis的API网关快速鉴权方法

  • 国知局
  • 2024-08-02 14:53:01

本发明涉及计算机,具体涉及一种基于redis的api网关快速鉴权方法。

背景技术:

1、随着微服务架构的兴起,传统的鉴权方案正在逐渐被更现代化和灵活的解决方案所取代。目前,基于微服务的鉴权架构主要有三种jwt令牌鉴权架构、部署一个独立的认证鉴权中心、网关作为认证鉴权中心。jwt令牌鉴权架构由于jwt是无状态的,一旦令牌签发之后,其中包含的信息就不会再改变。在权限需要动态调整的情况下,jwt无法及时反映最新的权限状态,独立的认证鉴权中心架构下网关服务需要频繁调用认证中心服务,服务之间的调用较耗时,并且用户每次鉴权都要请求数据库,会引入较大的延迟和系统性能的开销,难以应对高并发情况下的访问需求。网关作为认证鉴权中心,虽然统一了接口方便微服务访问控制的管理,但认证和授权功能与网关紧密耦合在一起,系统的技术耦合度增加,当改变权限策略时,需要对整个网关重新部署,系统的可扩展性降低。

技术实现思路

1、为了解决上述技术问题,本发明的目的在于提供一种基于redis的api网关快速鉴权方法,所采用的技术方案具体如下:

2、本发明提供了一种基于redis的api网关快速鉴权方法,该方法包括以下步骤:

3、在数据库中配置权限信息,将用户、角色和资源url进行关联;其中,数据库中包括用户表、角色表、服务权限表、位置信息表、用户角色关联表和角色服务关联表;

4、api网关将用户发送的用户名和密码请求转发至认证服务进行认证校验,生成并返回token和refresh-token;将token和用户所能访问url以hash散列形式存储在redis中;

5、用户请求访问时,网关对用户凭证进行认证,若认证失败,则返回错误信息;若认证成功,则进行鉴权操作,若用户拥有访问对应方法的权限,则放行继续进行请求处理;若用户无访问对应方法的权限,则返回客户端禁止访问信息;

6、若用户登录时权限发生变化,则实时同步数据库和缓存中用户权限信息;通过数据库日志文件获取mysql中权限变更信息,分析所述权限变更信息,将待同步的权限变更信息发布到消息队列,由数据同步服务订阅消息并执行权限数据同步操作。

7、优选的,用户表包括:用户id,用户名、密码、访问令牌和刷新令牌;

8、角色表包括:角色id、角色名和角色状态;

9、服务权限表包括:服务id、资源url和权限标识符。

10、优选的,鉴权方法,包括:

11、当发送请求时,查询redis中key的filed是否存在,若存在,则判定拥有访问权限;若不存在,则判定无访问权限;

12、其中,redis中权限存储结构key为token,field为用户所能访问url资源路径,value为对应权限标识符。

13、优选的,所述token采用sha-256生成哈希值的hmac算法进行签名。

14、优选的,所述权限变更信息,包括:token令牌、url资源路径和权限标识符。

15、优选的,当访问令牌时效小于预设时长时,客户端携带token和refresh-token发起刷新令牌请求,新的访问令牌生成后,刷新redis中对应用户旧token和权限,redis一次性更新旧token。

16、优选的,所述若用户登录时权限发生变化,则实时同步数据库和缓存中用户权限信息;通过数据库日志文件获取mysql中权限变更信息,分析所述权限变更信息,将待同步的权限变更信息发布到消息队列,由数据同步服务订阅消息并执行权限数据同步操作,包括:

17、当数据库中数据发生变化时,解析相应的binlog文件,提取dml语句;

18、对dml语句进行解析,识别其中的insert、update、delete类型、受影响的表名、字段名和字段值信息,从得到的权限数据中过滤出在线用户并筛选字段,并发送给消息队列中间件进行传输;其中在线用户为用户状态为1的用户,筛选字段包括用户token、服务url和权限标识符;

19、通过消息队列中间件将在线用户的权限变更消息同步给redis缓存,redis通过消息队列发送的信息对token和其对应的权限进行更新。

20、优选的,对token和其对应的权限进行更新时,将json数据结构转化为key、field、value结构;其中,key对应token,field对应service_url,value对应service_perms。

21、本发明至少具有如下有益效果:

22、本发明通过api网关统一入口,采用redis进行缓存权限信息,并将token和用户所能访问url以hash散列形式存储在redis中,也即采用hash结构来存储权限,直接通过token获取redis中权限信息,无需进行解析,减少了权限判断的次数,在token更新时,可对用户权限进行一次性更新,提高了鉴权速度,并且当用户登录权限更改时,可以通过捕获和处理数据库变更信息,实时将用户权限变更同步到redis中,提高了系统的实时性和响应速度,增强了高并发处理能力,确保了用户权限数据的一致性和可靠性,提升了系统性能和用户体验。

技术特征:

1.一种基于redis的api网关快速鉴权方法,其特征在于,该方法包括以下步骤:

2.根据权利要求1所述的一种基于redis的api网关快速鉴权方法,其特征在于,用户表包括:用户id,用户名、密码、访问令牌和刷新令牌;

3.根据权利要求2所述的一种基于redis的api网关快速鉴权方法,其特征在于,鉴权方法,包括:

4.根据权利要求1所述的一种基于redis的api网关快速鉴权方法,其特征在于,所述token采用sha-256生成哈希值的hmac算法进行签名。

5.根据权利要求2所述的一种基于redis的api网关快速鉴权方法,其特征在于,所述权限变更信息,包括:token令牌、url资源路径和权限标识符。

6.根据权利要求1所述的一种基于redis的api网关快速鉴权方法,其特征在于,当访问令牌时效小于预设时长时,客户端携带token和refresh-token发起刷新令牌请求,新的访问令牌生成后,刷新redis中对应用户旧token和权限,redis一次性更新旧token。

7.根据权利要求1所述的一种基于redis的api网关快速鉴权方法,其特征在于,所述若用户登录时权限发生变化,则实时同步数据库和缓存中用户权限信息;通过数据库日志文件获取mysql中权限变更信息,分析所述权限变更信息,将待同步的权限变更信息发布到消息队列,由数据同步服务订阅消息并执行权限数据同步操作,包括:

8.根据权利要求7所述的一种基于redis的api网关快速鉴权方法,其特征在于,对token和其对应的权限进行更新时,将json数据结构转化为key、field、value结构;其中,key对应token,field对应service_url,value对应service_perms。

技术总结本发明涉及计算机技术领域,具体涉及一种基于Redis的API网关快速鉴权方法。方法包括:在数据库中配置权限信息,API网关将用户名和密码请求转发至认证服务进行认证校验,将生成的token和用户所能访问url存储在Redis中;用户请求访问时,网关对用户凭证进行认证,基于认证结果进行相应的处理;若用户登录时权限发生变化,则同步数据库和缓存中用户权限信息;通过数据库日志文件获取MySQL中权限变更信息,将待同步的权限变更信息发布到消息队列,由数据同步服务订阅消息并执行权限数据同步操作。本发明提高了系统的实时性和响应速度。技术研发人员:左宪禹,朱梦圆,谢毅,党兰学,乔保军,张磊,周黎鸣,胡坤受保护的技术使用者:河南大学技术研发日:技术公布日:2024/7/29

本文地址:https://www.jishuxx.com/zhuanli/20240801/244168.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。