普通令牌token和jwt令牌token区别以及使用场景

一、token分类

SpringSecurityOauth2令牌
参考URL: https://www.yuque.com/gaoxi-dj1fr/fxgaxe/ivvpqc

1.普通令牌的作用:唯一标识存贮在数据库或内存中的用户信息,在认证时,SpringSecurity拿着普通令牌去数据库中查询用户信息使用
2.jwt令牌的作用:jwt令牌中本身存储着用户信息,在认证时,SpringSecurity从jwt令牌中解析出用户信息即可,不需要借助数据库等进行存储

1. 普通令牌

普通令牌是SpringSecurityOauth2给客户端颁发的一个无含义的令牌,在令牌发布时,SpringSecurityOauth2将用户信息存储到程序指定的存储位置,并用普通令牌唯一标识这个存储信息,当用户再次携带令牌访问时,SpringSecurityOauth2会根据令牌查询用户信息,进而实现权限角色的限制。

普通令牌需要一个存储用户信息的地方,这个地方可以内存,也可以是数据库(Redis、Mysql)。

基于数据库存储(以Redis为例)

①基于Redis存储用户信息的方式,认证服务器将用户信息存储到指定的Redis数据库中
②当资源服务获取到access_token时,会到Redis中获取用户信息
③在微服务场景下适用

2. JWT令牌

jwt令牌的方式就无需数据库的介入,jwt令牌中就包含着用户的信息,SpringSecurityOauth在发布令牌时,会将用户信息放入JWT令牌中,用户拿着JWT令牌时,SpringSecurityOauth从中获取到用户信息,实现用户权限的控制。

jwt不需要后端进行存储。
①基于JWT令牌的认证服务器,用户信息存储到令牌中
②当资源服务获取到access_token后,会解析这个jwt类型的access_token,从中会获取到用户信息
③微服务场景下也不适用

二、应用场景

APP服务端接口,用jwt还是用redis和token,分别有什么优势
参考URL: https://blog.csdn.net/u014756827/article/details/103047695

1. 根据权限是否要求严格角度判断

流行的jwt有一个设计上的缺陷,他通过密文传输用户信息,那么服务器在这种基础结构下是无法做到关闭用户登陆授权的操作,如果用户的jwt密文被偷窃,那么黑客就能以用户身份登陆,并且即使知道密文丢失,也无法关闭被偷窃的jwt密文。为了应对这一问题,可以使用jwt内部验证有效期和jwt黑名单模式,但是有效期始终无法做到及时停止jwt授权,这是一个治标不治本的方法。而jwt黑名单模式,则需要数据库或内存存储黑名单,那么,这实际上违背了jwt的免数据库设计原则。

因此,如果严格按照两种模式设计,jwt更适合低安全级别的服务器设计,如普通的博客、阅读器等等,这种服务允许不严格的登陆授权,即使密文丢失也不会造成用户的严重损失,却能获得较高的服务性能。

token模式,必须配合数据库进行存储和查询,因此性能较低,但token模式却能做到及时的授权关闭,已经登陆授权可见可查,每一次token都会有对应的记录。因此token模式适合较高安全度和用户登陆等信息分析的系统,如政府系统,支付系统等不可能允许高权限的token被偷窃却不能及时关闭授权。

jwt,适合轻量的系统和权限不严格系统。
token,适合重量系统和权限有严格要求的系统。

三、参考

APP服务端接口,用jwt还是用redis和token,分别有什么优势
参考URL: https://blog.csdn.net/u014756827/article/details/103047695

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值