文档章节

JWT(Json web token)

lemonwater
 lemonwater
发布于 2017/09/08 15:06
字数 569
阅读 22
收藏 1

首先了解一下JWT使用过程:
Token 是服务器端在验证客户端user_id/pwd 没问题后, 签发给客户端的, 作为标示该用户的一个令牌, 之后客户端就使用该令牌和服务器端进行交互.  

Token的根本作用:
就一点: 用于服务器端标示是哪个用户的请求

JWT 安全吗? 
基本上很安全, 否则就没有人用了, 具体分析:
1. JWT 令牌可以防止信息伪造, 服务器在生成token中的signature部分, 可以使用一些高级的加密算法, 比如使用HMAC算法 + Secret key, 因为Secret key是只有服务器知道, 所以别人仿造不了. 随意仿造, JWT token的完整性就改变了. 
2. JWT 令牌可以防止重放攻击. JWT不好伪造, 如果整个token被人直接套牌不也可以吗? token中增加失效期设置, 这样就缩小了重放攻击的窗口. 
3. token 作为 http head的 authentication 取值, 本身是明文的, 可以上 https, 这样 token 也被加密了. 在公网下, https是必须的, 尤其是登录环节, 明文提交用户名/密码明文太可怕了. 

关于防止被套牌, 除了增加失效期属性, 还可以做进一步工作, 具体为:
  客户端请求令牌时候, 不仅需要提交 user_id/pwd, 而且需要提交一个 device_id, 也就是说 user_id对应一个有效的令牌, 同时在server端的user表中将token和device_id都存下来, 如果下次客户端来自其他设备, 查询 user表中的token和device_id, 如果请求中的token或device_id和user表不一致, 清空user表的token, 即在服务器端强制标记该token失效. 
  除非安全要求很严, 否则不推荐这么复杂的作法,JWT的token本来可以在server端通过算法验证的, 不需要查询数据表, 而现在引入了数据表, 如果觉得这个方式丑陋, 可以持久化到redis而不是user表中. 
 

================================
更多文档  
================================
基于Token的WEB后台认证机制 http://www.cnblogs.com/xiekeli/p/5607107.html
JSON Web Token (JWT) 简介 https://mozillazg.github.io/2015/06/hello-jwt.html
jwt官网 https://jwt.io

本文转载自:http://www.cnblogs.com/harrychinese/p/jwt.html

共有 人打赏支持
lemonwater
粉丝 3
博文 64
码字总数 6545
作品 0
西安
私信 提问
[笔记] JWT Java Json Web Token (一)

jwt实现 JWT简单介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。J...

z201
2017/10/22
0
0
深入浅出JWT(JSON Web Token )

1. JWT 介绍 JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-contained)的方式,用于在各方之间以JSON对象安全传输信息。 这些信息可以通...

mantoudev
05/05
0
0
JSON Web Token jwt

文章转自:http://www.ruanyifeng.com/blog/2018/07/jsonweb_token-tutorial.html JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 一、跨域认证的问题...

daos
08/29
0
0
JSON Web Token 入门教程

JSON Web Token 入门教程 作者: 阮一峰 日期: 2018年7月23日 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 一、跨域认证的问题 互联网服务离不开...

祖冲之
07/24
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

当程序员有了中年危机 你会发现你就是个屁

前言 程序员是一个怎样的存在?引用一句鸡汤的名言来说:你以为你用双手改变了世界,实际上是苍老了自己。为什么我今天会抛出这个话题,其实我也是一个懵懂的少年,我也曾经为了成为一名程序...

架构师springboot
7分钟前
0
0
大型网站B2C商城项目实战+MongoDB+Redis+zookeeper+MySQL

本文列出了当今计算机软件开发和应用领域最关键部分,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉。...

java知识分子
7分钟前
1
0
大型企业网络系统集成方案如何设计?

网络系统集成是企业实现无纸化办公和即时通讯办公的基础建设,在以生产效率为核心竞争力的市场中,企业想要快速获取信息并有效提高企业工作效率及业务能力,企业网络系统集成是必不可少的,由...

Java干货分享
8分钟前
0
0
Spring应用学习——IOC

1. Spring简介 1. Spring的出现是为了取代EJB(Enterprise JavaBean)的臃肿、低效、脱离现实的缺点。Spring致力于J2EE应用的各层(表现层、业务层、持久层)的解决方案,Spring是企业应用开...

江左煤郎
9分钟前
0
0
用Redis轻松实现秒杀系统

导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。 秒杀系统的架构设计 秒杀系统,是典型...

James-
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部