一种分布式令牌刷新方法及系统与流程

文档序号:31748069发布日期:2022-10-11 17:44阅读:95来源:国知局
一种分布式令牌刷新方法及系统与流程

1.本发明涉及计算机技术领域,特别是一种分布式令牌刷新方法及系统。


背景技术:

2.首先用户输入账号密码登录,登录成功后会颁发给客户端一个短期的身份令牌和一个长期的刷新令牌(刷新令牌不能用于身份鉴权),当身份令牌过期后,则需要返回登录并重新输入账号密码登录,为了用户体验不需要频繁登录,则需要通过已授权的刷新令牌去交换新的身份令牌,来延续登录身份令牌。
3.目前现有的处理方案是两种令牌都存储在后端缓存服务器中,身份令牌过期后,可以通过刷新令牌向服务器交换新的身份令牌,同时刷新令牌也将过期,重新颁发新的刷新令牌;但面对未来物联网大量设备接入服务器,对后端缓存服务器的内存有很大压力,需要水平扩展多台服务器来提供支持。


技术实现要素:

4.为克服上述问题,本发明的目的是提供一种能够通过将身份令牌与刷新令牌存储在客户端中,降低服务器的内存存储压力,增强刷新令牌安全性的分布式令牌刷新方法。
5.本发明采用以下方案实现:一种分布式令牌刷新方法,所述方法包括以下步骤:步骤s1、用户登录时客户端向服务端获取身份授权,服务端鉴权通过后颁发身份令牌和刷新令牌;步骤s2、所述服务端将刷新令牌添加到刷新令牌白名单;步骤s3、所述客户端在本地存储所述身份令牌和刷新令牌;步骤s4、客户端携带身份令牌请求服务端,服务端校验身份令牌;步骤s5、客户端通过刷新令牌向服务端交换新的身份令牌,同时产生新的刷新令牌,并更新到刷新令牌白名单中,替换原先旧的刷新令牌;步骤s6、交换身份令牌成功后,替换本地存储的身份令牌和刷新令牌。
6.进一步的, 所述步骤s1进一步具体为:用户登录时客户端向服务端发起请求获取身份授权,服务器通过aes对称加密算法,生成64位长度的刷新令牌,身份令牌则通过json web token方式生成;将刷新令牌加入到身份令牌的载荷数据中,防止旧版本产生的身份令牌通过鉴权校验,校验时服务端提取身份令牌的载荷数据的刷新令牌,判断是否在刷新令牌白名单中才通过鉴权校验。
7.进一步的,所述步骤s2进一步具体为:服务端将生成的刷新令牌添加到刷新令牌白名单,而身份令牌则下发到客户端本地存储并设置过期时间。
8.进一步的,所述步骤s3进一步具体为:客户端在本地存储身份令牌和刷新令牌,再次打开客户端时可以先读取本地存储的身份令牌,请求服务器时携带上身份令牌。
9.进一步的,所述步骤s4进一步具体为:客户端携带身份令牌请求服务端,服务器获取客户端请求的身份令牌,校验过期失效后,通知客户端身份令牌过期。
10.进一步的,所述身份令牌的校验规则包括以下步骤:步骤s11、验证身份令牌签名是否一致;步骤s12、验证playload载荷数据的exp字段时间是否小于当前时间判断过期。
11.进一步的,所述步骤s5进一步具体为:身份令牌过期后,客户端通过读取本地存储的刷新令牌与身份令牌,向服务端请求交换新的身份令牌,校验刷新令牌与身份令牌通过后,产生新的刷新令牌与身份令牌,将新的刷新令牌更新到刷新令牌白名单中,替换原先旧的刷新令牌,再新的刷新令牌与身份令牌再下发给客户端本地存储。
12.进一步的,所述刷新令牌的校验规则包括以下步骤:步骤s21、从请求的身份令牌中提取“re_token”绑定的刷新令牌,与请求的刷新令牌对比是否一致,不一致时校验失败不允许生成新身份令牌;步骤s22、判断请求的刷新令牌在刷新令牌白名单中是否存在,需要先将请求的刷新令牌通过aes算法解密得到用户uid与随机码nonce;如果存在且随机码nonce一致则通过;不一致则校验失败不允许生成新身份令牌。
13.本发明还提供了一种分布式令牌刷新系统,所述系统包括鉴权模块、添加模块、存储模块、请求模块、更新模块和替换模块;所述鉴权模块,即用户登录时客户端向服务端获取身份授权,服务端鉴权通过后颁发身份令牌和刷新令牌;所述添加模块,即所述服务端将刷新令牌添加到刷新令牌白名单;所述存储模块,即所述客户端在本地存储所述身份令牌和刷新令牌;所述请求模块,即客户端携带身份令牌请求服务端,服务端校验身份令牌;所述更新模块,即客户端通过刷新令牌向服务端交换新的身份令牌,同时产生新的刷新令牌,并更新到刷新令牌白名单中,替换原先旧的刷新令牌;所述替换模块,即交换身份令牌成功后,替换本地存储的身份令牌和刷新令牌。
14.进一步的,所述鉴权模块进一步具体为:用户登录时客户端向服务端发起请求获取身份授权,服务器通过aes对称加密算法,生成64位长度的刷新令牌,身份令牌则通过json web token方式生成;将刷新令牌加入到身份令牌的载荷数据中,防止旧版本产生的身份令牌通过鉴权校验,校验时服务端提取身份令牌的载荷数据的刷新令牌,判断是否在刷新令牌白名单中才通过鉴权校验。
15.进一步的,所述添加模块进一步具体为:服务端将生成的刷新令牌添加到刷新令牌白名单,而身份令牌则下发到客户端本地存储并设置过期时间。
16.进一步的,所述存储模块进一步具体为:客户端在本地存储身份令牌和刷新令牌,再次打开客户端时可以先读取本地存储的身份令牌,请求服务器时携带上身份令牌。
17.进一步的,所述请求模块进一步具体为:客户端携带身份令牌请求服务端,服务器获取客户端请求的身份令牌,校验过期失效后,通知客户端身份令牌过期。
18.进一步的,所述身份令牌的校验规则包括第一验证单元和第二验证单元;所述第一验证单元,即验证身份令牌签名是否一致;所述第二验证单元,即验证playload载荷数据的exp字段时间是否小于当前时间判断过期。
19.进一步的,所述更新模块进一步具体为:身份令牌过期后,客户端通过读取本地存储的刷新令牌与身份令牌,向服务端请求交换新的身份令牌,校验刷新令牌与身份令牌通过后,产生新的刷新令牌与身份令牌,将新的刷新令牌更新到刷新令牌白名单中,替换原先旧的刷新令牌,再新的刷新令牌与身份令牌再下发给客户端本地存储。
20.进一步的,所述刷新令牌的校验规则包括提取单元和判断单元;所述提取单元,即从请求的身份令牌中提取“re_token”绑定的刷新令牌,与请求的刷新令牌对比是否一致,不一致时校验失败不允许生成新身份令牌;所述判断单元,即判断请求的刷新令牌在刷新令牌白名单中是否存在,需要先将请求的刷新令牌通过aes算法解密得到用户uid与随机码nonce;如果存在且随机码nonce一致则通过;不一致则校验失败不允许生成新身份令牌。
21.本发明的有益效果在于:本发明通过将身份令牌与刷新令牌存储在客户端中,降低服务器的内存存储压力,同时提供轻量结构的刷新令牌白名单存储方案,增强刷新令牌安全性,提高了刷新令牌的刷新效率和速度。
附图说明
22.图1是本发明的方法流程示意图。
23.图2是本发明的系统原理框图。
具体实施方式
24.下面结合附图对本发明做进一步说明。
25.请参阅图1所示,本发明的一种分布式令牌刷新方法,所述方法包括以下步骤:步骤s1、用户登录时客户端向服务端获取身份授权,服务端鉴权通过后颁发身份令牌和刷新令牌;步骤s2、所述服务端将刷新令牌添加到刷新令牌白名单;步骤s3、所述客户端在本地存储所述身份令牌和刷新令牌;步骤s4、客户端携带身份令牌请求服务端,服务端校验身份令牌;步骤s5、客户端通过刷新令牌向服务端交换新的身份令牌,同时产生新的刷新令牌,并更新到刷新令牌白名单中,替换原先旧的刷新令牌;步骤s6、交换身份令牌成功后,替换本地存储的身份令牌和刷新令牌。
26.下面通过一具体实施例对本发明进行说明:1、用户登录时客户端向服务端发起请求获取身份授权,服务器通过aes对称加密算法,根据“用户唯一标识码uid”与“6位随机码nonce”生成64位长度的刷新令牌,身份令牌则通过json web token(简写jwt)方式生成;刷新令牌示例如下:“|”是分隔符,刷新令牌格式:aes加密(“uid|nonce”);身份令牌示例如下:令牌格式:{base64(header)}.{base64(playload)}.{signature};playload载荷数据:将刷新令牌(re_token)加入到身份令牌的载荷数据中,防止旧版本产生的身份令牌通过鉴权校验,校验时服务端提取身份令牌的载荷数据的刷新令牌,判断是否在刷新令牌白名单中才通过鉴权校验;signature签名值:(采用hmacsha256签名算法);2、服务端将生成的刷新令牌添加到刷新令牌白名单,而身份令牌则不需要存储在缓存服务器,下发到客户端本地存储并设置过期时间(默认:2小时);刷新令牌白名单是字典结构,会存储在缓存服务器中,存储的是未aes加密的刷新令牌;刷新令牌白名单,键是用户唯一标识码uid,值是6位随机码nonce;下次登录时会替换上次生成的刷新令牌,并在刷新令牌白名单中更新,如用户uid(5c20a5cc33b3f03cd03ac072);3、客户端在本地存储身份令牌(access_token)和刷新令牌(refresh_token),下
次再打开客户端时可以先读取本地存储的身份令牌,请求服务器时携带上身份令牌;4、客户端携带身份令牌请求服务端,服务器获取客户端请求的身份令牌,校验过期失效后,通知客户端身份令牌过期;校验规则:a)验证身份令牌签名是否一致;b)验证playload载荷数据的exp字段时间是否小于当前时间判断过期;5、身份令牌过期后,客户端通过读取本地存储的刷新令牌与身份令牌,向服务端请求交换新的身份令牌,校验刷新令牌与身份令牌通过后,产生新的刷新令牌(生成身份令牌与刷新令牌同步骤1中的生成规则)与身份令牌,接着将新的刷新令牌更新到刷新令牌白名单中,替换原先旧的刷新令牌,再新的刷新令牌与身份令牌再下发给客户端本地存储;例:用户uid(5c20a5cc33b3f03cd03ac072)旧的刷新令牌的随机码nonce是“123abc”校验通过后,产生新的刷新令牌与身份令牌,新的刷新令牌随机码nonce是“r5sxmz”发下给客户端的刷新令牌(加密后的)新的身份令牌。
27.校验刷新令牌规则:从请求的身份令牌中提取“re_token”绑定的刷新令牌,与请求的刷新令牌对比是否一致,不一致时校验失败不允许生成新身份令牌;判断请求的刷新令牌在刷新令牌白名单中是否存在,需要先将请求的刷新令牌通过aes算法解密得到用户uid与随机码nonce;如果存在且随机码nonce一致则通过;不一致则校验失败不允许生成新身份令牌;6、交换身份令牌成功后,替换本地存储的身份令牌和刷新令牌;同第三步。
28.请参阅图2所示,本发明还提供了一种分布式令牌刷新系统,所述系统包括鉴权模块、添加模块、存储模块、请求模块、更新模块和替换模块;所述鉴权模块,即用户登录时客户端向服务端获取身份授权,服务端鉴权通过后颁发身份令牌和刷新令牌;所述添加模块,即所述服务端将刷新令牌添加到刷新令牌白名单;所述存储模块,即所述客户端在本地存储所述身份令牌和刷新令牌;所述请求模块,即客户端携带身份令牌请求服务端,服务端校验身份令牌;所述更新模块,即客户端通过刷新令牌向服务端交换新的身份令牌,同时产生新的刷新令牌,并更新到刷新令牌白名单中,替换原先旧的刷新令牌;所述替换模块,即交换身份令牌成功后,替换本地存储的身份令牌和刷新令牌。
29.所述鉴权模块进一步具体为:用户登录时客户端向服务端发起请求获取身份授权,服务器通过aes对称加密算法,生成64位长度的刷新令牌,身份令牌则通过json web token方式生成;将刷新令牌加入到身份令牌的载荷数据中,防止旧版本产生的身份令牌通过鉴权校验,校验时服务端提取身份令牌的载荷数据的刷新令牌,判断是否在刷新令牌白名单中才通过鉴权校验。
30.所述添加模块进一步具体为:服务端将生成的刷新令牌添加到刷新令牌白名单,而身份令牌则下发到客户端本地存储并设置过期时间。
31.所述存储模块进一步具体为:客户端在本地存储身份令牌和刷新令牌,再次打开客户端时可以先读取本地存储的身份令牌,请求服务器时携带上身份令牌。
32.所述请求模块进一步具体为:客户端携带身份令牌请求服务端,服务器获取客户端请求的身份令牌,校验过期失效后,通知客户端身份令牌过期。
33.所述身份令牌的校验规则包括第一验证单元和第二验证单元;所述第一验证单元,即验证身份令牌签名是否一致;所述第二验证单元,即验证playload载荷数据的exp字段时间是否小于当前时间判断过期。
34.所述更新模块进一步具体为:身份令牌过期后,客户端通过读取本地存储的刷新令牌与身份令牌,向服务端请求交换新的身份令牌,校验刷新令牌与身份令牌通过后,产生新的刷新令牌与身份令牌,将新的刷新令牌更新到刷新令牌白名单中,替换原先旧的刷新令牌,再新的刷新令牌与身份令牌再下发给客户端本地存储。
35.所述刷新令牌的校验规则包括提取单元和判断单元;所述提取单元,即从请求的身份令牌中提取“re_token”绑定的刷新令牌,与请求的刷新令牌对比是否一致,不一致时校验失败不允许生成新身份令牌;所述判断单元,即判断请求的刷新令牌在刷新令牌白名单中是否存在,需要先将请求的刷新令牌通过aes算法解密得到用户uid与随机码nonce;如果存在且随机码nonce一致则通过;不一致则校验失败不允许生成新身份令牌。
36.总之,本发明通过将身份令牌与刷新令牌存储在客户端中,降低服务器的内存存储压力,同时提供轻量结构的刷新令牌白名单存储方案,增强刷新令牌安全性。
37.以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1