写点东西《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 应用程序的关键。


🌟更多精彩

点击👉这里~~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度强化学习(王树森)笔记07

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

Qt|大小端数据转换

后面打算写Qt关于网络编程的博客,网络编程就绕不开字节流数据传输,字节流数据的传输一般是根据协议来定义对应的报文该如何组包,那这就必然牵扯到了大端字节序和小端字节序的问题了。不清楚的大小端的可以看一下相关资料:大小端模…

【华为 ICT HCIA eNSP 习题汇总】——题目集11

1、某公司的内网用户采用 NAT 技术的 NO-pat 方式访问互联网,若所有的公网地址均被使用,则后续上网的内网用户会()。 A、挤掉前一个用户,强制进行 NAT 转换上网 B、将报文同步到其他 NAT 转换设备上进行 NAT 转换 C、自…

springboot集成 Redis快速入门demo

一、准备redis环境 这里用docker-compose来搭建Redis测试环境,采用单机模式,具体配置如下: docker-compose-redis.yml version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/redis:6.0.8 # ima…

牛客周赛30

思路:先把x, y除以最大公约数变成最小值,然后同时乘以倍数cnt,只记录两个数都在[l,r]间的倍数。 代码: int gcd(int a,int b){return b ? gcd(b, a % b) : a; }void solve(){int x, y, l, r;cin >> x >> y >>…

ubuntu中的rsyslog

目录 1. rsyslog简介 2. 查看/var/log 3. syslog的配置文件 3.1 /etc/rsyslog.d/50-default.conf 3.2 /etc/rsyslog.conf 4. 如何写入syslog 4.1 C语言 4.2 shell 4.3 内核输出 5. syslog.1和syslog.2.gz等文件是如何生成 6. logrotate是如何被执行 7. 如何限制sys…

【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手

目录 一、开启WireShark的大门 1.1 WireShark简介 1.2 常用的Wireshark过滤方式 二、如何抓包搜索关键字 2.1 协议过滤 2.2 IP过滤 ​编辑 2.3 过滤端口 2.4 过滤MAC地址 2.5 过滤包长度 2.6 HTTP模式过滤 三、ARP协议分析 四、WireShark之ICMP协议 五、TCP三次握…

Jmeter学习系列之一:Jmeter的详细介绍

目录 一、Jmeter的介绍 二、Jemeter的特点 三、Jemter相关概念 3.1采样器(Samplers) 3.2逻辑控制器(Logic Controllers) 3.3监听器(Listeners) 3.4配置元件(Configuration Elements&#…

Mac安装配置maven

Mac安装配置maven 官网下载地址:https://maven.apache.org/download.cgi 下载好以后解压配置 maven 环境变量 打开终端,输入命令打开配置文件./bash_profile open ~/.bash_profile输入i进入编辑模式,进行maven配置; MAVEN_HOME为maven的本地路径 ex…

Phoncent博客GPT写作工具

对于许多人来说,写作并不是一件轻松的事情。有时候,我们可能会遇到写作灵感枯竭、写作思路混乱、语言表达困难等问题。为了解决这些问题,Phoncent博客推出了一款创新的工具——GPT写作工具,它利用了GPT技术,为用户提供…

Springboot入门教程详解

Springboot入门教程详解 博客主页:划水的阿瞒的博客主页 欢迎关注🖱点赞🎀收藏⭐留言✒ 系列专栏:Springboot入门教程详解首发时间:🎞2024年1月29日🎠 如果觉得博主的文章还不错的话&#xff0c…

vue+axios+promise实际开发用法

vueaxiospromise实际开发用法 vuex 核心 & 数据响应式原理 vuex 使用总结(详解) vue的双向绑定原理及实现 一、axios的介绍 axios 是由 promise 封装的一个 http 的库。 promise是 es6 为解决异步编程的。 什么是异步? 1. 不会按…

【大数据】Flink 架构(六):保存点 Savepoint

《Flink 架构》系列(已完结),共包含以下 6 篇文章: Flink 架构(一):系统架构Flink 架构(二):数据传输Flink 架构(三):事件…

你这人能不能灵活点?前端代码简单优化一下?

公众号:程序员白特,可jia前端qun 背景 贴近目前公司的业务,做的增删改查比较多。基本上都是做一些表格的业务系统比较多,因此在写的过程中,都会遇到一些优化的细点,仅供参考,觉得好的可以采纳&a…

FairGuard游戏加固入选《CCSIP 2023中国网络安全行业全景册(第六版)》

2024年1月24日, FreeBuf咨询正式发布《CCSIP 2023中国网络安全行业全景册(第六版)》。本次发布的全景图,共计展示20个一级分类、108个细分安全领域,旨在为广大企业提供网络安全产品选型参考,帮助企业了解中国网络安全技术与市场的…

C++11——新的类功能与可变参数模板

系列文章目录 文章目录 系列文章目录一、新的类功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete继承和多态中的final与override关键字 二、可变参数模板递归函数方式展开参数包逗号表达式展开参数包STL容器中的empalce_back与…

100天精通鸿蒙从入门到跳槽——第20天:ArkTS装饰器@Link双向数据绑定

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》 — Go语言学习之旅!《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!100天…

免费分享一套微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现) ,分享下哈。 项目视频演示 【免费】微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现)…

【开源】基于JAVA语言的毕业生追踪系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2.3 就业状况模块2.4 学历深造模块2.5 信息汇总分析模块2.6 校友论坛模块 三、系统设计3.1 用例设计3.2 实体设计 四、系统展示五、核心代码5.1 查询我的就业状况5.2 初始化就业状况5.…

SSL加密证书免费申请

首先,让我们来了解一下SSL证书的基本作用。SSL证书通过公钥和私钥的非对称加密技术,使得服务器与浏览器之间的通信内容得到高强度加密,同时验证网站的真实身份,从而提升用户的信任度,也是搜索引擎排名优化的一个重要因…