JSON Web Token实际应用
一、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实际应用相关推荐
- JWT(JSON Web Token)简介及实现
JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信 ...
- SpringBoot 2.x 使用 JWT(JSON Web Token)
一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外提供服务,采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于 cookie 的 S ...
- 在吗?认识一下JWT(JSON Web Token) ?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:是虎子呀 地址:my.oschina.net/u/4062 ...
- JWT(JSON Web Token)自动延长到期时间
本文翻译自:JWT (JSON Web Token) automatic prolongation of expiration I would like to implement JWT-based ...
- JSON Web Token - 在Web应用间安全地传递信息
JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 让我们来假想一下一个场景.在A用户关注了B用户的时候,系统发邮件给B用户, ...
- Python 生成 JWT(json web token) 及 解析方式
一.关于 jwt 的原理及概念可以自行在网络上搜索了解一下,这里推荐一篇写的比较好的博客 深入了解Json Web Token之概念篇 另附 JWT 的官方文档: https://jwt.io/int ...
- JSON WEB TOKEN(JWT)的分析
JSON WEB TOKEN(JWT)的分析 一般情况下,客户的会话数据会存在文件中,或者引入redis来存储,实现session的管理,但是这样操作会存在一些问题,使用文件来存储的时候,在多台机器上 ...
- JSON WEB TOKEN
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西
JSON Web Token(缩写 JWT)是目前最流行,也是最常见的跨域认证解决方案.无论是咱们后端小伙伴,还是前端小伙伴对都是需要了解. 本文介绍它的原理.使用场景.用法. 关于封面:这个冬天你过 ...
- JWT(JSON Web Token)简介
文章目录 一.JWT是什么 二.跨域认证问题 三.JWT原理 四.JWT数据结构 1.header(头部) 2.Payload(负载) 3.Signature 五.JWT是如何工作的 一.JWT是什么 ...
最新文章
- Linux系统基础-管理之用户、权限管理
- oracle创建自增
- mxmkc编译器参数!
- 洛谷P3960 列队(动态开节点线段树)
- python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解
- tvnewpro 病毒清除
- 线程池Executors创建多线程案例
- Maven pom 文件解释
- 介绍python修饰器的书_python修饰器
- Cache占用过多内存导致Linux系统内存不足问题排查
- hdu - 3415 Max Sum of Max-K-sub-sequence
- IDFT的python实现
- 【蓝桥结果填空】:时间显示
- 《A Sub-Pixel Edge Detector: an Implementation of the Canny/Devernay Algorithm》
- pycharm汉化包使用后无法打开设置选项问题
- 微软产品无法通过代理连接互联网解决办法
- 超几何分布检验(hypergeometric test)与费歇尔精确检验(fisher's exact test)
- 路由器Telnet及ACL配置
- 搜狗输入法 android 历史版本,搜狗输入法旧版
- 腾讯云快速增长背后 三大短板仍需补足