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验证相关推荐

  1. 不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO

    通常为了弄清楚一个概念,我们需要掌握十个概念.在判断 JWT (Json Web Token) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 ...

  2. jwt token 过期刷新_不要把 JWT 用作 session

    现在很多人使用 JWT 用作 session 管理,这是个糟糕的做法,下面阐述原因,有不同意见的同学欢迎讨论. 首先说明一下,JWT 有两种: 无状态的 JWT,token 中包含 session 数 ...

  3. VUE+SpringBoot+JWT实现token验证,SSO单点登录

    Session的产生: 在说session是啥之前,我们先来说说为什么会出现session会话,它出现的机理是什么?我们知道,我们用浏览器打开一个网页,用到的是HTTP协议,htpp协议是无状态的,什 ...

  4. ASP.NET Core Web Api之JWT VS Session VS Cookie(二)

    本文我们来探讨下JWT VS Session的问题,我们可直接抛出问题:使用客户端存储的JWT比服务端维持Session更好吗? 既然要比较JWT VS Session,那我们就得知道为何需要JWT和 ...

  5. Angular之jwt令牌身份验证

    Angular之jwt令牌身份验证 demo https://gitee.com/powersky/jwt 介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种 ...

  6. delphi接口带上请求头是什么意思_Gin框架中使用JWT进行接口验证

    背景: 在如今前后端分离开发的大环境中,我们需要解决一些登陆,后期身份认证以及鉴权相关的事情,通常的方案就是采用请求头携带token的方式进行实现.本篇文章主要分享下在Golang语言下使用jwt-g ...

  7. 如何使用JWT进行身份验证与授权

    简介 JWT定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 工作流程 1.用户使用账号.密码登录应用,登录的请求发送到认证服 ...

  8. JWT简介、JWT优缺点、JWT使用方法、.NET6使用JWT示例、JWT与Session对比

    一.JWT简介 JWT(Json Web Token)是一种可以跨域的认证方案. 构成: 头部Header:头部包含了两部分,token 类型和采用的加密算法(可为none,后端应限制加密算法,不以这 ...

  9. 浅谈SAML, OAuth, OpenID和SSO, JWT和Session

    前言 通常为了弄清楚一个概念,我们需要掌握十个概念.在判断 JWT(JsonWebToken) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 ...

最新文章

  1. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
  2. python逐行写入csv_python之模块csv之CSV文件的写入(按行写入)
  3. 统计模型参数量与FLOPs
  4. 2015生命之旅---第一站重庆
  5. iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象
  6. python多态_多态是什么?为什么要使用多态?
  7. html和jsp的差异
  8. MTK 驱动---(10) emmc总线
  9. 敏捷开发系列学习总结(16)——给Scrum Master的十个建议
  10. 基于Android 9.0 电池温度异常提醒
  11. osm数据下载 python_用Python解锁处理OSM数据的全部姿势
  12. Prometheus 监控服务端口、网站状态等(黑盒监测)
  13. 【软考10】计算机网络基础知识拾遗
  14. java权限管理与用户角色权限设计
  15. oracle mysql odbc驱动程序_oracle odbc驱动下载
  16. 三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
  17. 计算年龄:DATEDIF函数
  18. 关于求职及面试的一些小技巧
  19. 2022年保健品行业研究报告
  20. Edit Control响应全选(Ctrl+A)

热门文章

  1. Windows消息:怎样使用RegisterWindowMessage注册消息
  2. oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历
  3. xlwt什么版本支持xlsx的版本_Spring Framework Versions版本支持说明
  4. linux内核mtd分区,linux-kernel – ubifs卷与mtd分区
  5. 基于pygame的射击小游戏制作(一)让飞船动起来
  6. 长春市计算机学校老照片,松江这所学校一百年啦!一组老照片回忆曾经的旧时光…...
  7. 第四范式连续两年入选CB Insights全球AI百强榜
  8. python源码精要(4)-C代码规范
  9. 【Python】这10个Python性能调优的小技巧,你知道几个?
  10. 【NLP】Kaggle从零到实践:Bert中文文本分类