一种基于SDK的微服务权限信息透传优化方法及系统与流程

摘要: 本发明涉及权限管理,特别是一种基于sdk的微服务权限信息透传优化方法及系统。背景技术:1、在当前互联网系统中,无论是面向企业(tob)、个人(toc)还是政府(...
一种基于SDK的微服务权限信息透传优化方法及系统与流程

本发明涉及权限管理,特别是一种基于sdk的微服务权限信息透传优化方法及系统。

背景技术:

1、在当前互联网系统中,无论是面向企业(tob)、个人(toc)还是政府(tog)的应用,都普遍采用账户体系来管理用户权限数据。这些权限信息通常存储在底层的持久化数据库中,每当系统需要验证用户权限时,都必须从数据库中进行查询操作。

2、在微服务架构下,系统被拆分为多个独立的子系统或模块,一次业务请求往往需要调用多个子系统链路协作完成,每个子系统都可能频繁调用权限数据,导致同一权限信息被重复获取多次。这种重复查询不仅增加了数据库的负载,浪费了计算和存储资源,还显著延长了接口的响应时间,影响整体系统性能和用户体验。

3、为解决该问题,现有技术常采用集中式缓存(如redis)存储权限数据,但仍存在跨服务网络开销、缓存穿透与击穿风险;若采用服务本地缓存方案,又会面临权限变更后失效不及时的问题,一旦管理员在后台吊销用户权限,在缓存超时时间到达前,用户仍可在各微服务间访问,存在重大安全漏洞。随着系统规模的扩大,性能与安全的矛盾愈发突出,亟需一种高效且安全的方案来优化权限数据的传递和缓存机制。

技术实现思路

1、为克服现有技术中业务请求数据库查询次数多、接口响应速度慢,影响整体系统性能和用户体验的问题,本发明的目的是提供一种基于sdk的微服务权限信息透传优化方法及系统,能够实现权限数据一次获取、全链路复用,大幅减少数据库查询次数、提升接口响应速度,改善系统性能和用户体验。

2、本发明采用以下方案实现:

3、一种基于sdk的微服务权限信息透传优化方法,所述方法步骤如下:

4、步骤1:创建一个通用的sdk工具包,该工具包内置token令牌校验方法、获取账户及权限信息方法以及外部请求转发方法;

5、步骤2:所有服务端项目集成所述sdk工具包,并将token令牌校验和账户权限获取功能统一交由sdk工具包处理;

6、步骤3:当子系统接收到http请求时,首先调用sdk中的token令牌校验方法进行鉴权验证,所述token令牌校验方法能够解析token的有效性,如果校验失败则立即返回错误;

7、步骤4:在token校验通过后,sdk会检查http请求头中是否已存在权限信息密文,如果存在,则对权限信息密文进行解密和完整性验证,验证通过后获取权限明文信息,否则,从token中提取账户id,并获取该账户的详细权限信息;

8、步骤5:获取到账户及权限信息后,所述sdk工具包将其以明文形式存储到本地缓存中,并设置超时时间;

9、步骤6:当子系统需要调用其他子系统数据时,所述sdk工具包会将本地缓存中的权限明文信息加密生成权限信息密文,将token和权限信息密文附加到http请求头中并转发http请求;

10、步骤7:接收http请求的外部子系统重复执行步骤3到6的流程,直接通过权限信息密文进行解密和验证得到权限明文信息。

11、进一步的,所述http请求头中随权限信息密文一并传递的还包括强制内置的permission-version权限版本号字段,所述permission-version字段用于标识对应账户权限数据的版本;当账户权限发生变更时,服务端递增该账户对应的权限版本号。

12、进一步的,各子系统的sdk客户端与权限管理服务端建立长连接;当账户权限发生变更时,权限管理服务端通过长连接向所有已连接的sdk客户端推送权限变更通知;sdk客户端收到变更通知后,将对应账户id加入本地布隆过滤器中。

13、进一步的,sdk工具包检查到请求头中存在权限信息密文后,还执行以下失效校验步骤:

14、从请求头中提取账户id与permission-version字段,将账户id输入本地布隆过滤器进行存在性查询;

15、若布隆过滤器命中该账户id,或提取的permission-version字段与本地记录的最新权限版本号不一致,则sdk阻断对当前权限信息密文的信任,跳转执行步骤5重新查询权限数据库以获取最新的账户权限信息;

16、若布隆过滤器未命中该账户id且permission-version字段与本地版本号一致,则继续执行步骤4的解密与验证流程。

17、进一步的,步骤6中,sdk工具包使用当前周期的对称密钥与随机生成的nonce随机数,使用chacha20-poly1305加密算法对明文进行加密得到权限信息密文,同时生成用于完整性与真实性校验的认证标签tag;

18、所述nonce与认证标签tag随权限信息密文、permission-version一并附加到http请求头中;下游sdk工具包接收后,通过相同密钥、nonce与认证标签tag完成解密与完整性验证。

19、一种基于sdk的微服务权限信息透传优化系统,所述系统包括:sdk封装模块、项目集成管控模块、请求鉴权校验模块、密文检测分支处理模块、本地缓存存储模块、跨服务加密转发模块、下游请求循环处理模块;

20、所述sdk封装模块用于创建一个通用的sdk工具包,该工具包内置token令牌校验方法、获取账户及权限信息方法以及外部请求转发方法;

21、所述项目集成管控模块用于所有服务端项目集成所述sdk工具包,并将token令牌校验和账户权限获取功能统一交由sdk工具包处理;

22、所述请求鉴权校验模块用于当子系统接收到http请求时,首先调用sdk中的token令牌校验方法进行鉴权验证,所述token令牌校验方法能够解析token的有效性,如果校验失败则立即返回错误;

23、所述密文检测分支处理模块用于在token校验通过后,sdk会检查http请求头中是否已存在权限信息密文,如果存在,则对权限信息密文进行解密和完整性验证,验证通过后获取权限明文信息,否则,从token中提取账户id,并获取该账户的详细权限信息;

24、所述本地缓存存储模块用于获取到账户及权限信息后,所述sdk工具包将其以明文形式存储到本地缓存中,并设置超时时间;

25、所述跨服务加密转发模块用于当子系统需要调用其他子系统数据时,所述sdk工具包会将本地缓存中的权限明文信息加密生成权限信息密文,将token和权限信息密文附加到http请求头中并转发http请求;

26、所述下游请求复用处理模块用于接收http请求的外部子系统重复执行请求鉴权校验模块、密文检测分支处理模块、本地缓存存储模块、跨服务加密转发模块的流程,直接通过权限信息密文进行解密和验证得到权限明文信息。

27、进一步的,所述http请求头中随权限信息密文一并传递的还包括强制内置的permission-version权限版本号字段,所述permission-version字段用于标识对应账户权限数据的版本;当账户权限发生变更时,服务端递增该账户对应的权限版本号。

28、进一步的,各子系统的sdk客户端与权限管理服务端建立长连接;当账户权限发生变更时,权限管理服务端通过长连接向所有已连接的sdk客户端推送权限变更通知;sdk客户端收到变更通知后,将对应账户id加入本地布隆过滤器中。

29、进一步的,sdk工具包检查到请求头中存在权限信息密文后,还执行以下失效校验步骤:

30、从请求头中提取账户id与permission-version字段,将账户id输入本地布隆过滤器进行存在性查询;

31、若布隆过滤器命中该账户id,或提取的permission-version字段与本地记录的最新权限版本号不一致,则sdk阻断对当前权限信息密文的信任,重新查询权限数据库以获取最新的账户权限信息;

32、若布隆过滤器未命中该账户id且permission-version字段与本地版本号一致,则继续执行解密与验证流程。

33、进一步的,所述跨服务加密转发模块中,sdk工具包使用当前周期的对称密钥与随机生成的nonce随机数,使用chacha20-poly1305加密算法对明文进行加密得到权限信息密文,同时生成用于完整性与真实性校验的认证标签tag;

34、所述nonce与认证标签tag随权限信息密文、permission-version一并附加到http请求头中;下游sdk工具包接收后,通过相同密钥、nonce与认证标签tag完成解密与完整性验证。

35、本发明的有益效果在于:

36、本发明提供一种基于sdk的微服务权限信息透传优化方法及系统,权限信息仅需在链路入口查询一次,后续所有下游子系统均可通过请求头密文直接解密复用,整条调用链只需一次数据库访问,彻底解决多服务重复查询的资源浪费问题,显著缩短接口响应时长。

37、同时具备轻量级失效机制,无需频繁查询集中缓存,在本地即可完成失效判定,毫秒级收敛权限变更结果,既保留了本地缓存的高性能优势,又解决了传统ttl缓存权限吊销不及时的安全漏洞。

38、实施例中,采用chacha20-poly1305认证加密算法,同时实现权限数据的加密保密性与完整性校验,配合随机nonce避免重放攻击,确保权限信息在微服务间传输过程中不被篡改、窃取。

39、本发明中通过sdk工具包封装全部权限处理逻辑,业务服务只需集成即可复用整套能力,无需重复开发鉴权、缓存、加密等功能,降低开发成本,同时保证全系统权限处理逻辑一致,提升可维护性。