写点东西《JWT 与会话身份验证》

写点东西《JWT 与会话身份验证》

  • 身份验证与授权
  • JWT 与session身份验证 - 基本差异
  • 什么是 JWT?
  • JWT 结构:
  • JWT 工作流程:
  • 优势:
  • 安全问题:
  • 处理令牌过期:
  • 基于session的身份验证(通常称为基于 cookie 的身份验证)
  • 工作原理:
  • 优势:
  • 缺点:
  • 结论:做出正确的身份验证选择
  • 🌟更多精彩

在这里插入图片描述

身份验证与授权

身份验证究竟是什么,它与授权有何不同?身份验证是验证某人身份的过程,而授权是验证用户可以访问哪些特定应用程序、文件和数据的过程。如何确保请求访问资源的人员就是他们声称的人员?并且一旦确认了他们的身份,如何控制他们可以做什么或看到什么?

JWT 与session身份验证 - 基本差异

JWT(JSON Web 令牌)与基于session的身份验证之间的争论是现代 Web 开发中的一个重要观点。

  • JWT 认证:在此,服务器生成一个令牌,客户端存储该令牌并在每次请求时出示。这是一种无状态方法,意味着服务器不需要保留令牌的记录。

  • 基于session的认证:相反,它是状态的。服务器为用户创建一个会话,并将会话数据存储在服务器端。客户端仅持有会话标识符,通常在 cookie 中。

什么是 JWT?

JSON Web 令牌 (JWT) 作为一种紧凑且独立的机制,用于以 JSON 对象的形式在各方之间安全地传输信息。

enter image description here

JWT 结构:

  • 标头:指定令牌类型 (JWT) 和签名算法(例如,HMAC SHA256)。
  • 有效负载:包含声明,即关于实体(用户)的陈述和附加元数据。
  • 签名:通过使用密钥对标头和有效负载进行编码而创建,确保令牌的完整性。

jwt_dia

JWT 工作流程:

  • 在用户认证时,服务器生成一个 JWT。
  • 此 JWT 会发送回客户端并进行存储,通常存储在本地存储或仅限 HTTP 的 Cookie 中。
  • 客户端在后续请求的 HTTP 授权标头中包含此令牌。
  • 服务器验证令牌,如果有效,则授予访问权限。

优势:

  • 可扩展性:由于无状态的特性,JWT 非常适合分布式系统。
  • 灵活性:它们可以在不同的域和应用程序中使用。
  • 安全性:正确实施后,它们提供了一种处理用户身份验证的安全方式。

安全问题:

  • 传输安全性:至关重要的是通过 HTTPS 传输 JWT。
  • 存储:安全地存储 JWT 以防止 XSS 攻击和其他漏洞。

处理令牌过期:

  • 实现短寿命 JWT 并使用刷新令牌来续订访问权限,而无需重新验证。 了解基于会话的身份验证

基于session的身份验证(通常称为基于 cookie 的身份验证)

是一种方法,其中服务器在维护用户身份验证记录方面发挥着关键作用。

工作原理:

  1. 用户认证:用户提供凭据,服务器验证。
  2. 会话创建:认证成功后,服务器创建一个包含唯一标识符、用户标识符、会话开始时间、过期时间以及可能包含的其他上下文信息(如IP地址和用户代理)的会话记录。将其存储在数据库中。
  3. Cookie 存储:将该会话标识符发送回用户浏览器,并存储为 cookie。
  4. 会话验证:用户浏览器的每个请求都包含此 cookie,服务器通过查询数据库验证会话。如果有效,则处理请求。

优势:

  • 简单性和可靠性:服务器的会话记录充当集中式真实来源,使其易于管理用户会话。
  • 撤销效率:可以通过删除或使会话记录无效来快速撤销访问权限,确保最新的会话有效性。

缺点:

  • 大规模性能问题:每次会话验证都依赖数据库交互可能会引入延迟,特别是对于高流量应用程序。
  • 动态环境中的延迟:在具有动态客户端的应用程序中,此延迟可能会影响用户体验,从而使基于会话的身份验证在这种情况下不太理想。

session_dia

结论:做出正确的身份验证选择

在 JWT 和基于会话的身份验证之间进行选择取决于您的应用程序的特定需求。如果您优先考虑无状态和可扩展性,JWT 可能是您的首选。对于立即控制会话至关重要的传统应用程序,基于会话的身份验证占上风。理解这些概念及其含义是开发安全高效的 Web 应用程序的关键。


🌟更多精彩

点击👉这里~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/355842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工程对接大模型流式和非流式对话底层原理解析

文章目录 前言一、非流式输出设计二、stream流式输出设计三、手撸一个流式输出项目总结 前言 之前对接过OpenAi大模型的官方API,可以看到它有一个Stream参数,设置成true的时候就是流式的对话输出,现象就是一段一段的往外崩。 官方手册的地址…

蓝桥杯训练|基础语言Day1 - STL pair vector list stack queue set map容器

学习目标: 博主介绍: 27dCnc 专题 : 算法题入门 👍👍👍👍👍👍👍👍👍👍👍👍 ☆*: .。. o(≧▽≦)o .&#xff61…

Python爬虫案例展示:实现花猫壁纸数据采集

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 模块使用: import requests >>> pip install requests win R 输入cmd 输入安装命令 pip install requests 安装即…

Springboot各种请求参数详解

文章目录 请求Postman**为什么需要Postman****什么是Postman****Postman使用教程** 请求参数简单参数实体参数数组参数集合参数![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/eba0ca80e3724412ae4c79af72b859c3.png#pic_center)日期参数json参数路径参数总结 请求…

STM32CubeMX教程31 USB_DEVICE - HID外设_模拟键盘或鼠标

目录 1、准备材料 2、实验目标 3、模拟鼠标实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.0、工程基本配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.0、配置Project Manager页面 3.2.1、设初始化调用流程 3.2.2、外设中…

ESP8266 控制之 : 使用 RingBuffer USART1 和 USART3互传

简介 使用Buffer来避免数据的丢失, 或许你自己在使用串口进行收发时会丢失数据, 现在我们就来简单使用一下RingBuffer创建Rx、Tx的Buffer来避免发送接收丢包或数据丢失问题。 扩展知识 RingBuffer的介绍, 看完大概也就知道了,实在不知道就看看下面的代码 线路连接…

详解操作系统各章大题汇总(死锁资源分配+银行家+进程的PV操作+实时调度+逻辑地址->物理地址+页面置换算法+磁盘调度算法)

文章目录 第三章:死锁资源分配图例一例二 第三章:银行家算法第四章:进程的同步与互斥做题步骤PV操作的代码小心容易和读者写者混 1.交通问题(类似读者写者)分析代码 2.缓冲区问题(第二个缓冲区是复制缓冲区…

实现元素进入界面的平滑效果

先看效果: 实现思路:获取页面中需要加载动画的节点,用元素的animate()方法创建一个动画对象,并传入两个关键帧,接着使用IntersectionObserverAPI创建观察对象,用于观察元素进入页面。当元素进入界面时&…

【数据分享】1929-2023年全球站点的逐年平均气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

CSS--Emmet 语法

Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法. 目录 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 2. 快速生成CSS样式语法 2.1 快速生成CSS样式语法 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 1. 生成标…

2.【Vue3】Vue 基本使用——局部使用Vue

文章目录 1. 快速入门2. 常用指令2.1 v-for2.2 v-bind2.3 v-if 与 v-show2.4 v-on2.5 v-model 3. 生命周期4. Ajax 函数库 Axios4.1 Axios 基本使用4.2 Axios 请求方式别名 1. 快速入门 现在需要将 “hello vue3” 这样一个字符串渲染到页面上进行展示。 这个需求并不陌生&…

JVM系列——对象管理

JVM对象分布 对象头 第一类是用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等 另外一部分是类型指针,即对象指向它的类型元数据的指针,Java 虚…

【ArcGIS微课1000例】0096:dem三维块状表达(层次地形模型)

文章目录 一、DEM表达方式二、层次模型表达三、注意事项一、DEM表达方式 DEM数字高程模型的表达方式通常有以下4种: 1. 规则格网 2. 不规则三角网 3. 等高线 4. 层次地形模型 作为栅格地理数据,DEM 数据具有2.5维的特征,能够以三维表面的形式进行三维空间表达。但受其数…

Web 开发 6:Redis 缓存(Flask项目使用Redis并同时部署到Docker详细流程 附项目源码)

大家好!欢迎来到第六篇 Web 开发教程,今天我们将探讨一个非常重要的话题:Redis 缓存。作为一个互联网开发者,你一定知道在处理大量请求时,性能优化是至关重要的。而 Redis 缓存正是帮助我们提升系统性能的利器。Redis …

爬虫基础-计算机网络协议

一个数据的传输 这些设备的数据转发是通过协议来完成的,整个互联网可以说是完全由网络协议来维持的 不同的协议分工不同,比如ip协议确保了ip寻址,tcp协议确保了数据完整性 IP地址和URL ip地址 整个网络传输可以比作快递,数据就…

2023年度总结——忙忙碌碌,终有归章

思来想去,还是决定写一篇年终总结,一来算是对23年的一年的回顾,二来是对24年的展望。记得22年也写过一篇年度总结,题目是《2022年度总结——一切都在慢慢变好》。今年,我想起的题目是《2023年度总结——忙忙碌碌&#…

在Temu跨境电商平台上,如何快速出单?

随着越来越多的商家选择入驻Temu跨境电商平台,一旦入驻申请通过,商家就可以开始上架商品并等待订单的产生。然而,很多新手跨境电商卖家都面临一个共同的问题,那就是:Temu出单快吗?Temu上架多久能出单&#…

STM32CubeMX教程27 SDIO - 读写SD卡

目录 1、准备材料 2、实验目标 3、轮询方式读取SD卡流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.0、工程基本配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.0、配置Project Manager页面 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流…

激光雷达,角力「降本增效」

高工智能汽车研究院最新发布的数据显示,2023年1-11月,中国市场(不含进出口)乘用车前装标配激光雷达搭载量为46.48万颗,同比增长372.35%,继续保持高增长态势。 随着激光雷达在中国市场完成规模化上量的节点&…

Promethues是什么?

什么是Prometheus? Prometheus是一个开源的系统监控以及报警系统。整和zabbix的功能,系统,网络,设备。 promethues可以兼容网络、设备、容器监控、告警系统。因为和k8s是一个项目基金开发的产品,天生就匹配k8s的原生…