nodejs简易的token更新模型

JWT是一种流行的登录认证工具,通过生成短期有效的tokens并结合redis存储来管理token的有效性。文章讨论了token泄露的风险,提出了通过关联用户ID和token,以及使用短期token和双令牌(access_token,refresh_token)策略来增强安全性。
摘要由CSDN通过智能技术生成

1. 什么是JWT

JWT全称为(JSON WEB TOKEN),是目前流行做登录认证的工具之一,它是一个非常轻巧的规范

2.库安装

npm install jsonwebtoken
github地址: jsonwebtoken

3.更新策略1

假设一个token的有效时间为T
当超过T小时没有请求过接口则失效;
在这里插入图片描述

  1. 用户携带账号密码访问后端校验。
  2. 校验成功后生成有效期为T/2token
  3. redis中设置有效期为T,keytokenkey-value
  4. 当用户访问接口时,如果token已经失效了,则去redis中查找,如果redis有该token则生成一个新的token,替换掉已经失效的token,重置redis的有效期时间为T。如果redis中没有该token,说明该token已经在redis失效或者是无效token,则告知用户重新登录
问题1:一旦token泄露,就可以一值访问 ~_~!

改进1

  1. 3步骤:redis中设置有效期为T,keyuserid,值为tokenuserid-token
  2. 10步骤: 如果存在还要验证token是否一致,保证是最新的token

这样以来就可以在token泄露的时候重新登录更新redis中的token,在原token失效后就无法再更新token
但是一般token的有效时间T都是比较大(比如10天);

问题2:token泄露后有效时间过长

改进2

  1. 2步骤:校验成功后生成有效期为t(尽可能短)token
问题2:token传输过于频繁

改进3

  1. 采用一个access_token访问资源。
  2. 采用一个refresh_token更新access_token

sso图解:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值