jwt介绍

前言

很多人不了解 JWT(JSON Web Token)啥意思,甚至jwt、cookie、token(令牌)、session、单点登录是啥搞不清,这篇文章以 JWT 介绍为引,顺便简单区分一下他们之间的关系,总而言之,这篇文章不白看

介绍

上面讲的实际上都是单点登录过程中的参与角色之一,这也是统一身份认证环境系统中的一部分

我们从一个角度开始分析他们之间的关系

  1. 我们都知道 http 是无状态协议,那么无状态的情况,服务器作为一个用户管理中心,他怎么知道我们我们用户是谁操作的呢(怎么区分用户呢)
  2. 很明显根据用户账号,而我们发现用户并不是每次都登陆,很麻烦,于是我们进一步追溯到了用户注册用户时,会在数据库中生成我们互联网用户的唯一标识,这个标识就是我们的用户id(互联网的身份证号),早期就是直接使用用户id来区分我们的身份
  3. 当使用账号密码登录后,客户端就会获取到用户的id,存放在内存中,后续对于需要确认用户的的操作传递用户id即可
  4. 那么问题来了,直接使用用户id不太好,不安全,再加上一些其他常用数据原因,于是出现了session,也就是服务端保存用户常用信息,使用一个session 关联用户,session id发送给用户,用户拿着session 给服务端,服务端确认身份,拿着信息直接操作,可是这样管理 session,用户一多服务端压力还会变大,也衍生出了redis 的操作,现在仍然受用
  5. 当然也出现了更加主流的身份令牌,发放一个期限的 token令牌 来代替我们的用户id,也就是身份令牌,这样就算token 泄露了,也不会长期被持有,风险大幅度降低,有条件再加上防篡改操作,这样 jwt 结构就出现了,后续就让用户拿着这些信息访问即可
  6. 那还有一个问题,并且我们客户端一旦不小心中途退出,重新进入又要重新输入账号密码,麻烦,需要用户本地保存一下令牌,这也是从session 方案就开始的存储方式了,那么令牌怎么存放呢,浏览器有cookie,localStore 的方式,于是出现了cookie + session 的方式,同时还有移动端的纯token方式,双token等
  7. 上面签名令牌后续免认证过程就是单点登录的核心逻辑,是统一身份认证子集,统一身份认证还包含整个签名过程、权限等更复杂功能

ps:当然身份系统打通的话,一个token便可以分别使用到多个平台

那么单点登录解决了什么问题?

答:单点登录,在这个系统中,同一个用户只需要登录一次,后续就可以拿着登录后签发的令牌免认证操作,减少了很多麻烦

cookie 是啥?

答:cookie是浏览器保存服务器令牌的一种方式,可以在浏览器中持久存放,即使用户不小心关闭标签,下次仍然可以在请求中取出它亮出我们的身份,当然如果过期了,就不行了需要重新登录签名

session是啥?

session是服务端的一个缓存,一种key-value结构,key则是生成的sessionid,用于给用户,value是用户信息或者令牌,可以根据用户传递过来的sessionid来直接获取到用户的信息

jwt

JWT(JSON Web Token) 实际上就是一种token令牌的生成方式,其主要组成方式如下所示:

  • 头部结构,主要保存了加密算法
  • 荷载payload,保存了我们的内容
  • Signature,加密结果,用于后端对比,避免有人篡改荷载信息

看了上面的结构,相信也能知道什么是jwt了,且jwt的内容是接近明文的,只是有了加密串防篡改,相对也安全了不少,且里面也有时间戳,能设置过期时间,算是很方便了

后端可以直接获取jwt,直接验证内容是否串改,里面的token可以直接使用了,一般token和用户信息会有一个对照表,直接使用token对照用户信息操作即可

最后

他们之间的关系大致如此,更细的没有多介绍,到了这里更细的只要稍微查一下,就能查到,本篇文章就介绍到这里了

相关推荐
AlienZHOU4 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
Captaincc7 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
计算机魔术师9 小时前
德国Wiki被黑后两周,OpenAI终于把模型失控的账本摊开了
前端
kyriewen9 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
IT_陈寒10 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
前端snow10 小时前
ai agent --- 多agent框架之图编排引擎-langgraph
前端
竹林81810 小时前
OmniPic Studio v3.2.1 核心技术架构与全平台发版解析文档
前端·浏览器
JamesZhang8007810 小时前
页面内存只涨不跌? 一次泄漏排查, 牵出 WeakMap 的诞生
前端
Z小明10 小时前
第 6 章 组件进阶
前端·vue.js
江华森10 小时前
HTTP请求的完整过程详解:从DNS解析到TCP挥手的微秒级实战分析
前端