一、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失效问题

JSON Web Token实际应用的更多相关文章

  1. 使用Json Web Token设计Passport系统

    >>Token Auth机制 基于Token的身份验证是无状态的,我们不将用户信息存在服务器或Session中. 相比原始的Cookie+Session方式,更适合分布式系统的用户认证,绕 ...

  2. JWT【JSON Web Token】 简述

    draft: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html http://tools.ietf.org/html/ ...

  3. 八幅漫画理解使用JSON Web Token设计单点登录系统

    用jwt这种token的验证方式,是不是必须用https协议保证token不被其他人拦截? 是的.因为其实只是Base64编码而已,所以很容易就被解码了.如果你的JWT被嗅探到,那么别人就可以相应地解 ...

  4. JSON Web Token - 在Web应用间安全地传递信息(zhuan)

    来自 http://blog.leapoahead.com/2015/09/06/understanding-jwt/ JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用 ...

  5. JSON Web Token

    What is JSON Web Token? JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact a ...

  6. [认证授权] 2.OAuth2(续) & JSON Web Token

    0. RFC6749还有哪些可以完善的? 0.1. 撤销Token 在上篇[认证授权] 1.OAuth2授权中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如何 ...

  7. Hacking JWT(JSON Web Token)

    0x01 JWT工作流程 JSON Web Token(JWT)是一个非常轻巧的规范. 这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. JWT常被用于前后端分离,可以和Restful ...

  8. 什么是JWT(JSON WEB TOKEN)

    转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准( ...

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

    转载自:http://blog.leapoahead.com/2015/09/06/understanding-jwt/ JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使 ...

  10. JWT(JSON Web Token) 多网站的单点登录,放弃session

    多个网站之间的登录信息共享, 一种解决方案是基于cookie - session的登录认证方式,这种方式跨域比较复杂. 另一种替代方案是采用基于算法的认证方式, JWT(json web token) ...

随机推荐

  1. HTML5开发笔记:图片上传预览

    我们知道通过<input type="file">可以用来进行一个图片或者文件的上传,然而浏览器自带的一个缩略图预览的功能其实是相当不美观的,很多时候我们希望可以在上传 ...

  2. 【CentOS】Linux日常管理

    /////////////////////////目录///////////////////////////////////////// 一.日常监控指标相关 1.监控系统状态命令 2.查看系统进程 ...

  3. Android下的屏幕适配

    1080 100dp 300px720 100dp 200px 300px 1080px 比例是300/1080=0.277200px 720px

  4. From cls答辩

    我没有想过有一天会因为wjmzbmr而开一篇. 因为看到了cls答辩的链接而震撼或是感动. 可能也跟最近身心比较疲惫有关...容易产生这样那样的感触... cls可能已不是我们这代OIER所能膜到的了 ...

  5. 页面制作之HTML

    标签 常用属性 id class style title - <a href ="/" title="收藏">收藏</a>(用于hove ...

  6. 2016 正确 sublime安装PHPcs PHPcodesniffer代码规范提示插件,修正网上部分不详细描述

    对你有助请点赞,请顶,不好请踩------送人玫瑰,手留余香!-------------------14:37 2016/3/212016 正确 sublime安装PHPcs PHPcodesniff ...

  7. 深度学习框架搭建之最新版Python及最新版numpy安装

    这两天为了搭载深度学习的Python架构花了不少功夫,但是Theano对Python以及nunpy的版本都有限制,所以只能选用版本较新的python和nunpy以确保不过时.但是最新版Python和最 ...

  8. Day 1:开始重新学习

    离开很久,前几天翻出以前做过的程序居然还能正常运行.有一点后悔,为什么当初没有坚持做下去.Delphi园地前一阵也曾经宣布要关站,但仍然坚持过来了,在此向站长致敬!我也要重新开始! 附图:Delphi ...

  9. 基础1.初次接触Jquery

    1.浅理解Jquery:jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents.events.实现动画效果,并且方便地为网站提供AJAX交互. 2.D ...

  10. python使用pdkdf2加盐密码

    from werkzeug.security import generate_password_hash, check_password_hash pw = generate_password_has ...