IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> JWT学习 -> 正文阅读

[网络协议]JWT学习

JWT

JWT本质就是一个字符串,它将用户信息保存在一个json字符串中,编码后就得到JWT token。
JWT Token带有签名信息,后端接收到后可以校验此JWT token是否被篡改,所以用在各个端将数据安全地以json形式传输。

流程

  1. 前端通过POST请求发送自己的用户名和密码,一般通过SSL加密的形式传输,从而避免敏感信息被嗅探。
  2. 后端通过数据库比对用户名和密码成功后,把用户信息作为JWT的Payload部分,然后与JWT Header编码拼接后再加上签名,形成JWT Token。形式就如aaa.bbb.ccc的字符串。
  3. 后端将JWT Token字符串返回给前端,前端将结果保存在浏览器中,退出登录时,删除已保存的JWT Token。
  4. 此后,前端每次请求时将JWT Token放在HTTP请求头中的Authorization中。
  5. 后端检查前端传输过来的JWT Token,通过比较签名是否正确、是否过期等来验证其有效性。
  6. 验证通过后,后端解析出JWT Token中包含的用户信息,然后进行逻辑操作,将结果返回。

优点

传统Session认证存在不足
HTTP本身是一种无状态协议,用户向后端提交了用户名和密码进行用户认证后,HTTP不会记录认证后的状态,下一次请求时,用户要再一次进行用户认证。
session认证是当用户首次登录成功后,服务器存储一份用户登录信息,登录信息会在服务器响应时传递给浏览器,浏览器保存为cookie,下次请求后携带cookie,服务器就能识别请求来自哪个用户了。

  1. 每个用户登录信息都保存在服务器session中,随着用户增多,服务器开销增大。
  2. session存在于服务器物理内存中,在分布式系统中便会失效。虽然可以将session统一保存到redis中,但增加了系统复杂性,对于不需要redis的应用也会白白引入一个缓存中间件。
  3. 对于非浏览器的客户端、手机移动端不适用,因为session依赖于cookie,而移动端经常没有cookie。
  4. session认证本质是基于cookie,若cookie被截获,用户容易受到跨站请求伪造攻击。但如果浏览器禁止cookie,此方法也将失效。
  5. 前后端分离系统中不适用,后端部署复杂,前端请求往往经过多个中间件到达后端,cookie中的session信息会转发多次。
  6. cookie无法跨域,所以session认证无法跨域,对单点登录不适用。

JWT优势

  1. JWT token数据量小,传输速度快。
  2. JWT Token是以JSON加密形式保存在客户端,所以JWT是跨语言的,任何web形式都支持。
  3. 不需要再服务器端保存会话信息。

JWT结构

Header
Payload
Signature

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:27:37  更:2022-05-08 08:30:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:03:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码