一、JWT认证方式的实现方式
1.客户端不需要持有密钥,由服务端通过密钥生成Token。
2.客户端登录时通过账号和密码到服务端进行认证,认证通过后,服务端通过持有的密钥生成Token,Token中一般包含失效时长和用户唯一标识,如用户ID,服务端返回Token给客户端。
3.客户端保存服务端返回的Token。
4.客户端进行业务请求时在Head的Authorization字段里面放置Token,如:Authorization: Bearer Token
5.服务端对请求的Token进行校验,并通过Redis查找Token是否存在,主要是为了解决用户注销,但Token还在时效内的问题;如果Token在Redis中不存在,则说明用户已注销;如果Token存在,则校验通过。
6.服务端可以通过从Token取得的用户唯一标识进行相关权限的校验,并把此用户标识赋予到请求参数中,业务可通过此用户标识进行业务处理。
7.用户注销时,服务端需要把还在时效内的Token保存到Redis中,并设置正确的失效时长。

二、在实际环境中如何使用JWT
1.Web应用程序
在令牌过期前刷新令牌。如设置令牌的过期时间为一个星期,每次用户打开Web应用程序,服务端每隔一小时生成一个新令牌。如果用户一个多星期没有打开应用,他们将不得不再次登录。
2.移动应用程序
大多数移动应用程序用户只进行一次登录,定期刷新令牌可以使用户长期不用登录。
但如果用户的手机丢失,则可提供一种方式由用户决定撤销哪个设备的令牌。当然,这就需要服务端记录设备的名称,例如“maryo的iPad”。然后用户可以去申请并撤销获得“maryo的iPad”。当用户修改密码时需要服务端把原Token保存到Redis上,使其失效。

为了防止Token被窃取,最好把JWT和HTTPS结合起来使用。

三、如何实现安全认证与权限的结合
服务端生成的Token中需要包含用户唯一标识,这样用户进行业务请求时,服务端通过附带的Token获取用户唯一标识,通过此标识进行权限检查。

四、更换Token
为了解决高并发访问时更换Token, 有可能造成用旧的Token的访问失败。

在缓存中不保存Token,而是保存一个计数,每次更换Token时,计数加1,这个计数的值会跟用户ID一起加密后保存在新生成的Token中,返回给用户,用户每次访问时携带这个Token。验证用户Token时,用Token中的计数与缓存中保存的计数比较,如果差值范围在1~2之间就认为Token有效,这样即使在并发访问时,更换Token,计数值虽然不等,但在规定的差值范围内,也被认为有效,这样就解决了上面的Token失效问题

基于Token的WEB后台认证机制

转载于:https://www.cnblogs.com/linjiqin/p/6222174.html

JSON Web Token实际应用相关推荐

  1. JWT(JSON Web Token)简介及实现

    JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信 ...

  2. SpringBoot 2.x 使用 JWT(JSON Web Token)

    一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外提供服务,采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于 cookie 的 S ...

  3. 在吗?认识一下JWT(JSON Web Token) ?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:是虎子呀  地址:my.oschina.net/u/4062 ...

  4. JWT(JSON Web Token)自动延长到期时间

    本文翻译自:JWT (JSON Web Token) automatic prolongation of expiration I would like to implement JWT-based ...

  5. JSON Web Token - 在Web应用间安全地传递信息

    JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 让我们来假想一下一个场景.在A用户关注了B用户的时候,系统发邮件给B用户, ...

  6. Python 生成 JWT(json web token) 及 解析方式

    一.关于 jwt 的原理及概念可以自行在网络上搜索了解一下,这里推荐一篇写的比较好的博客 深入了解Json Web Token之概念篇 另附 JWT 的官方文档: https://jwt.io/int ...

  7. JSON WEB TOKEN(JWT)的分析

    JSON WEB TOKEN(JWT)的分析 一般情况下,客户的会话数据会存在文件中,或者引入redis来存储,实现session的管理,但是这样操作会存在一些问题,使用文件来存储的时候,在多台机器上 ...

  8. JSON WEB TOKEN

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  9. JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西

    JSON Web Token(缩写 JWT)是目前最流行,也是最常见的跨域认证解决方案.无论是咱们后端小伙伴,还是前端小伙伴对都是需要了解. 本文介绍它的原理.使用场景.用法. 关于封面:这个冬天你过 ...

  10. JWT(JSON Web Token)简介

    文章目录 一.JWT是什么 二.跨域认证问题 三.JWT原理 四.JWT数据结构 1.header(头部) 2.Payload(负载) 3.Signature 五.JWT是如何工作的 一.JWT是什么 ...

最新文章

  1. Linux系统基础-管理之用户、权限管理
  2. oracle创建自增
  3. mxmkc编译器参数!
  4. 洛谷P3960 列队(动态开节点线段树)
  5. python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解
  6. tvnewpro 病毒清除
  7. 线程池Executors创建多线程案例
  8. Maven pom 文件解释
  9. 介绍python修饰器的书_python修饰器
  10. Cache占用过多内存导致Linux系统内存不足问题排查
  11. hdu - 3415 Max Sum of Max-K-sub-sequence
  12. IDFT的python实现
  13. 【蓝桥结果填空】:时间显示
  14. 《A Sub-Pixel Edge Detector: an Implementation of the Canny/Devernay Algorithm》
  15. pycharm汉化包使用后无法打开设置选项问题
  16. 微软产品无法通过代理连接互联网解决办法
  17. 超几何分布检验(hypergeometric test)与费歇尔精确检验(fisher's exact test)
  18. 路由器Telnet及ACL配置
  19. 搜狗输入法 android 历史版本,搜狗输入法旧版
  20. 腾讯云快速增长背后 三大短板仍需补足

热门文章

  1. PAT乙级题解目录——更新ing
  2. python生成倒计时图片_python pygame--倒计时
  3. 正则表达式(思维导图速查版)
  4. Unity3D之UGUI基础5:Toggle复选框
  5. C#基础11.1:static关键字
  6. Bluetooth L2CAP介绍
  7. 吴恩达神经网络和深度学习-学习笔记-19-机器学习策略(正交化+单一数字评估指标)
  8. Ubuntu虚拟机环境下安装Python3.6
  9. 贺利坚老师汇编课程39笔记:用于内存寻址的寄存器同时引入BP
  10. RocketMQ——角色与术语详解