一种基于业务领域填充访问令牌信息的机制制造技术

技术编号:29933088 阅读:10 留言:0更新日期:2021-09-04 19:04
本发明专利技术步骤:认证及授权服务获取用户的授权信息并缓存,返回JWT令牌;用户在访问其中一个业务领域时,携带JWT令牌发送请求,令牌信息填充组件识别URL中的业务领域信息,判断JWT令牌中是否包含对应业务领域信息:如果已包含,则不做处理;如果没包含,令牌信息填充组件从全量信息缓存获取对应业务领域信息,判断JWT令牌中的有效载荷是否包含其它业务领域信息:如果JWT令牌中有效载荷没其它业务领域信息,令牌信息填充组件将对应业务领域信息填充至JWT令牌中的有效载荷;如果JWT令牌中已有其它业务领域信息,令牌信息填充组件将对应业务领域信息填充至JWT令牌中的有效载荷并替换原有的其它业务领域信息,与业务领域无关的公共信息继续保留。息继续保留。

【技术实现步骤摘要】
一种基于业务领域填充访问令牌信息的机制


[0001]本专利技术涉及计算机
,具体涉及信息技术应用和数据切换,尤其涉及一种基于业务领域填充访问令牌信息的机制。

技术介绍

[0002]随着移动互联网日渐成熟以及服务于制造业的工业互联网平台逐步兴起,系统开发由原来单体式架构的业务服务逐渐被拆分成多个由许多松散耦合且可独立部署的较小组件或服务组成的微服务应用。为保持微服务的横向扩展能力,一般情况下微服务是无状态性的。系统为记录用户的登录状态,或者为用户创建身份认证的凭证,在现有技术下,会使用以下认证机制:一、 Session(会话控制)认证机制。由于Session对应的信息存储在服务器上,不利于分布式应用,因此现在大部分系统不再使用Session认证;二、 JWT(Json Web Token)认证机制。JWT是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519),该令牌被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该令牌也可直接被用于认证,也可被加密。基于令牌的鉴权机制类似于HTTP协议,也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于令牌认证机制的应用不需要去考虑用户在哪一台服务器登录了,为应用的扩展提供了便利。同时JWT是可以进行跨语言支持的,JAVA、JavaScript、NodeJS、PHP等多种语言都可以使用,具有通用性。
[0003]JWT中包含非常多信息,尤其包含登录用户名、过期时间、用户所在组织、角色、用户所有的权限以及部分其他业务相关信息等。以RBAC(Role

Based Access Control,基于角色的访问控制)为例,如附图1所示,在一个复杂的微服务构建的平台当中,物料、BOM、物流、仓储等为接入平台的业务领域(其中,“...”代表其它未列明的业务领域),每个业务领域相对独立,并且有自己对应的角色和权限配置,每个业务领域背后会由一个或多个微服务共同组成,这些角色和权限会注册到统一的用户权限管理中心(附图1中简称用户中心),用户权限管理中心对平台用户进行相应的授权管理。如附图2所示,随着平台功能不断完善,会有越来越多的业务领域接入平台,例如财务、人事、供应链等业务领域,相应业务领域的相关角色、权限及其它信息将随着业务领域接入平台而注册至用户权限管理中心,当前的登录用户包含的组织、角色、权限及业务领域相关信息等也将越来越庞大,会导致JWT中的有效载荷(payload)也非常大,如附图3所示。
[0004]由于每次HTTP请求都会带上JWT,如果相应有效载荷太大会导致性能问题,通常权限框架层面会限制JWT的信息在一定大小范围之内,例如7k以内。而对于复杂的微服务构建的平台,JWT相应的有效载荷大小很有可能会超出框架限定的范围而无法完成认证。因此,需要一种机制将JWT当中的有效载荷控制在一定大小之内,从而解决因信息庞大而导致可
能出现的性能问题,提升系统稳定性并提高系统认证效率。

技术实现思路

[0005]本专利技术是为了解决用户认证时JWT当中的有效载荷过大导致的性能问题,而提出的一种基于业务领域填充访问令牌信息的机制。
[0006]为实现上述目的,本专利技术提出的一种基于业务领域填充访问令牌信息的机制,其中,将访问令牌(JWT令牌)中的信息按照业务领域维度划分,不同业务领域的权限使用不同的命名空间隔离;网关前端包括令牌信息填充组件,可从访问路径(URL)中识别业务领域信息;上述机制包括以下步骤:S1用户在浏览器或客户端登录后,认证及授权服务获取用户的授权信息并缓存至全量信息缓存,同时返回JWT令牌至浏览器或客户端,其中,此时的JWT令牌的有效载荷(payload)中仅包含少量与业务领域无关的公共信息,该全量信息缓存在登录后才出现,并在用户关闭浏览器或退出客户端登录后删除或自动过期;S2用户在浏览器或客户端访问其中一个业务领域时,浏览器或客户端携带JWT令牌发送请求,令牌信息填充组件识别请求的URL中的业务领域信息,判断JWT令牌中是否包含对应业务领域信息:S2.1如果已包含对应业务领域信息,不做任何处理;S2.2如果没有包含对应业务领域信息,令牌信息填充组件从全量信息缓存获取对应业务领域的信息,判断JWT令牌中的有效载荷是否包含其它业务领域信息:S2.2.1如果JWT令牌中有效载荷没有其它业务领域信息,仅包含少量与业务领域无关的公共信息,即用户登录后点击访问某一个业务领域页面的场景,令牌信息填充组件将对应业务领域的信息填充至JWT令牌中的有效载荷;S2.2.2如果JWT令牌中已包含其它业务领域信息,即包含少量与业务领域无关的公共信息和其它业务领域信息,即用户切换业务领域从而切换菜单的场景,令牌信息填充组件将对应业务领域的信息填充至JWT令牌中的有效载荷,替换原有的其它业务领域的信息,与业务领域无关的公共信息继续保留。
[0007]可选地,上述JWT令牌的有效载荷中包含的少量与业务领域无关的公共信息,包括用户基本信息、用户所在组织信息和用户其它信息。
[0008]可选地,上述令牌信息填充组件还包括可用于识别用户信息、从全量信息缓存中获取当前业务领域信息并填充到JWT令牌中的有效载荷。
[0009]可选地,上述业务领域的信息包括对应业务领域的权限、对应业务领域的其它信息。
[0010]本专利技术对比已有技术具有以下创新点:1. 通过令牌信息填充组件识别访问路径中所包含的业务领域信息,只获取并填充请求中对应业务领域的信息,提高识别和响应速度。
[0011]2. 当用户切换不同业务领域的菜单访问相应的页面时,JWT令牌中的有效载荷只保留与业务领域无关的信息,即少量与业务领域无关的公共信息,切换对应业务领域的相
关信息,保证JWT令牌的有效载荷在一定大小范围内,从而保证性能不出现问题。
[0012]3. 根据角色不同,一个用户需要访问的业务领域页面通常在一定数量内,比如开发工程师可能只关注物料和仓储业务领域,不需要关注物流、财务等其它业务领域,因此通过切换菜单来切换业务领域属于低频操作,有效载荷信息量小,从而保障性能。
附图说明
[0013]图1是一个复杂的微服务构建的平台的页面示意图。
[0014]图2是不同业务领域的角色和权限注册到用户权限管理中心的示意图。
[0015]图3是JWT令牌的有效载荷包含的信息示意图。
[0016]图4是本专利技术一个实施例中流程示意图。
[0017]图5是本专利技术一个实施例中全量信息缓存的示意图。
[0018]图6是本专利技术另一个实施例中有效载荷中切换业务领域信息的示意图。
具体实施例
[0019]下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于业务领域填充访问令牌信息的机制,其中,将访问令牌(JWT令牌)中的信息按照业务领域维度划分,不同业务领域的权限使用不同的命名空间隔离;网关前端包括令牌信息填充组件,可从访问路径(URL)中识别业务领域信息;其特征在于,包括以下步骤:S1用户在浏览器或客户端登录后,认证及授权服务获取用户的授权信息并缓存至全量信息缓存,同时返回JWT令牌至浏览器或客户端,其中,所述JWT令牌的有效载荷(payload)中仅包含少量与业务领域无关的公共信息;S2用户在浏览器或客户端访问其中一个业务领域时,浏览器或客户端携带JWT令牌发送请求,令牌信息填充组件识别请求的URL中的业务领域信息,判断JWT令牌中是否包含对应业务领域信息:S2.1如果已包含对应业务领域信息,不做任何处理;S2.2如果没有包含对应业务领域信息,令牌信息填充组件从全量信息缓存获取对应业务领域的信息,判断JWT令牌中的有效载荷是否包含其它业务领域信息:S...

【专利技术属性】
技术研发人员:刘圣质
申请(专利权)人:广州易行数字技术有限公司
类型:发明
国别省市:

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

1