JWT 和 session验证
1:传统的session认证
- http是一种无状态的协议,每次都得我们用户手动的去进行认证,根据http协议,我们并不知道当前的这一份请求是哪一个用户发出的,所以我们能够让我们的应用能够识别出来是哪一个用户发起的请求,我们只能在服务器端存放一份用户登录的信息,这份登录的信息在响应的时候会传递给浏览器,并且告诉他保存为cookie,以便下一次的请求的回收发送给我们的应用,这就是我们的session认证
- 缺点
- 内存受到限制,session放在内存中,随着用户的增多,性能会收到限制
- 记录保存在内存中,在分布式的系统中,下一次的请求必须还要在这个服务器才能拿到资源,限制了负载均衡的能力
- 基于cookie做识别的,如果cookie被篡改,很容易被攻击
- 在前后端分离的系统中
- CSRF,跨站伪造请求攻击,如果cookie被拦截,很容易被攻击
- 用户的一次请求需要转发多次,如果使用sessionID,每次都要查询用户的信息,给服务器增加负担
2:JWT
- 用户通过账号,密码进行登录,获得认证
- 我们生成一个JWT返回给用户,同时JWT也会进行本地的保存
- 每次访问的时候,携带JWT,我们拦截器会对JWT进行拦截
- 如果成功,就执行响应的业务逻辑处理
- 如果失败,则返回错误的信息
1:认证的流程
- 账号,密码发送到后端的接口,http post请求
- 后端核对后,将用户的ID和其他信息作为JWT payload,并且和头部进行base64的编码后签名,形成一个token。
- token: head,payload,签名
- 后端将jwt字符串返回给前端,前端可以保存在缓存中,退出的手删除
- 前端每次请求的时候将JWT放在header中的授权位
- 后端检查是否存在,如果存在验证他的有效性,和时效性
2:结构
- 表头.payload.signature
- 标头:当前的JWT类型和所使用的签名 HS256
- 声明:用户和其他数据,同样使用base64的编码
- 不要放比较敏感的信息
- 签名:对前两部分做加密,HS256,保证JWT没有被篡改过
JWT 和 session验证相关推荐
- 不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO
通常为了弄清楚一个概念,我们需要掌握十个概念.在判断 JWT (Json Web Token) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 ...
- jwt token 过期刷新_不要把 JWT 用作 session
现在很多人使用 JWT 用作 session 管理,这是个糟糕的做法,下面阐述原因,有不同意见的同学欢迎讨论. 首先说明一下,JWT 有两种: 无状态的 JWT,token 中包含 session 数 ...
- VUE+SpringBoot+JWT实现token验证,SSO单点登录
Session的产生: 在说session是啥之前,我们先来说说为什么会出现session会话,它出现的机理是什么?我们知道,我们用浏览器打开一个网页,用到的是HTTP协议,htpp协议是无状态的,什 ...
- ASP.NET Core Web Api之JWT VS Session VS Cookie(二)
本文我们来探讨下JWT VS Session的问题,我们可直接抛出问题:使用客户端存储的JWT比服务端维持Session更好吗? 既然要比较JWT VS Session,那我们就得知道为何需要JWT和 ...
- Angular之jwt令牌身份验证
Angular之jwt令牌身份验证 demo https://gitee.com/powersky/jwt 介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种 ...
- delphi接口带上请求头是什么意思_Gin框架中使用JWT进行接口验证
背景: 在如今前后端分离开发的大环境中,我们需要解决一些登陆,后期身份认证以及鉴权相关的事情,通常的方案就是采用请求头携带token的方式进行实现.本篇文章主要分享下在Golang语言下使用jwt-g ...
- 如何使用JWT进行身份验证与授权
简介 JWT定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 工作流程 1.用户使用账号.密码登录应用,登录的请求发送到认证服 ...
- JWT简介、JWT优缺点、JWT使用方法、.NET6使用JWT示例、JWT与Session对比
一.JWT简介 JWT(Json Web Token)是一种可以跨域的认证方案. 构成: 头部Header:头部包含了两部分,token 类型和采用的加密算法(可为none,后端应限制加密算法,不以这 ...
- 浅谈SAML, OAuth, OpenID和SSO, JWT和Session
前言 通常为了弄清楚一个概念,我们需要掌握十个概念.在判断 JWT(JsonWebToken) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 ...
最新文章
- 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
- python逐行写入csv_python之模块csv之CSV文件的写入(按行写入)
- 统计模型参数量与FLOPs
- 2015生命之旅---第一站重庆
- iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象
- python多态_多态是什么?为什么要使用多态?
- html和jsp的差异
- MTK 驱动---(10) emmc总线
- 敏捷开发系列学习总结(16)——给Scrum Master的十个建议
- 基于Android 9.0 电池温度异常提醒
- osm数据下载 python_用Python解锁处理OSM数据的全部姿势
- Prometheus 监控服务端口、网站状态等(黑盒监测)
- 【软考10】计算机网络基础知识拾遗
- java权限管理与用户角色权限设计
- oracle mysql odbc驱动程序_oracle odbc驱动下载
- 三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
- 计算年龄:DATEDIF函数
- 关于求职及面试的一些小技巧
- 2022年保健品行业研究报告
- Edit Control响应全选(Ctrl+A)
热门文章
- Windows消息:怎样使用RegisterWindowMessage注册消息
- oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历
- xlwt什么版本支持xlsx的版本_Spring Framework Versions版本支持说明
- linux内核mtd分区,linux-kernel – ubifs卷与mtd分区
- 基于pygame的射击小游戏制作(一)让飞船动起来
- 长春市计算机学校老照片,松江这所学校一百年啦!一组老照片回忆曾经的旧时光…...
- 第四范式连续两年入选CB Insights全球AI百强榜
- python源码精要(4)-C代码规范
- 【Python】这10个Python性能调优的小技巧,你知道几个?
- 【NLP】Kaggle从零到实践:Bert中文文本分类