文档章节

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
2018/05/05
0
0
JSON Web Token jwt

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

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

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

祖冲之
2018/07/24
0
0
使用JWT简化http接口鉴权,告别烦人的加密、解密代码吧

在项目开发过程经常对接其他系统和被其他系统对接,发现很多系统都有一套自己的鉴权规则,还不提供库或代码,只有文字描述,经常需要自己实现鉴权方法,这真是太低效了。本文介绍一个在项目中...

辩才
2018/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 查询当天、本周,本月,上一个月的数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 wher......

BraveLN
21分钟前
2
0
Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构

前面几节中,都是通过java层调用到jni中,jni向下到c++层并未介绍 看下Java层一个方法在c++层 MediaPlayer后续过程 frameworks/av/media/libmedia/MediaPlayer.cpp 找一个我们之前熟悉的setDa...

天王盖地虎626
39分钟前
2
0
【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)

1、前言   框框博客在线报时:2018-11-07 19:31:06   当前MySQL最新版本:8.0.13 (听说比5.7快2倍)   官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MySQL 8 要比 MySQL 5.7 快 2 ...

Code辉
39分钟前
1
0
oracle dg备库重建redolog:ora-00313,ora-00312

trace文件: Errors in file /crbank/dbs/app/product/diag/rdbms/rdbs/dbs/trace/dbs_mrp0_24445130.trc: ORA-00313: open failed for members of log group 8 of thread 1 ORA-00312: onl......

hnairdb
53分钟前
1
0
深入分析Java I/O的工作机制 (一)

1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合,类库包括接口、抽象类、具体类等。 I/O是机器获取和交互信息的主要渠道。 java在I/O上也一直在做持续的优化,在1.4版开始...

java菜分享
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部