JSON Web Tokens介绍
转载请标明出处:
http://blog.csdn.net/forezp/article/details/72804324
本文出自方志朋的博客
##什么是JWT
这篇文章选择性翻译于https://jwt.io/introduction/
JWT简介
JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且字自包含的标准,用于将各方之间的信息地传输为JSON对象。 该信息是通过数字签名进行验证。使用HMAC算法或使用RSA的公钥/私钥对JWT进行签名,所以它的安全性非常高。
进一步解释它的特点或者概念:
• 紧凑型(compact):由于是加密后的字符串,JWT数据体积非常的小,可通过 POST参数或HTTP请求头发送。 另外,数据体积小意味着传输速度很快。
• 自包含(self-contained):JWT包含了用户的所有信心,所以避免了每次查询数据库,降低了服务器的负载。
JWT应用场景
一般什么时候应该使用JWT呢?,一般使用在以下场景:
• 验证:这是使用JWT的最常见的场景。 一旦用户登录,每个后续请求将包括JWT,允许用户访问该令牌允许的路由,服务和资源。 单点登录是一个广泛使用JWT的功能,因为它的开销很小,并且能够在不同的域中轻松使用。
• 信息交换:JWT是在各方之间安全传输信息的好方法,因为它们可以被签名,例如使用公钥/私钥对. 另外,当使用标题和有效载荷计算签名时,还可以验证内容是否未被篡改。
JWT结构
JWT由三个部分组成,分别为“.”分隔,三部分组成如下:
- Header(头)
- Payload(有效载荷)
- Signature(签名)
因此,JWT通常格式如下:
xxxxx.yyyyy.zzzzz
现在,依次对这三个组成部分,分开讲解:
####1. Header
标题通常由两部分组成:令牌的类型,即JWT,以及使用的哈希算法,如HMAC SHA256或RSA。
比如:
{
“alg”:“HS256”,
“typ”:“JWT”
}
将header进行Base64 编码作为JWT的第一部分。
2. Payload
这是JWT的第二部分,包含了用户的一些信息和Cliam(声明、权利),有三种类型的Cliam:保留,公开和私人声明。
一个典型的payload应该如下:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
将payload进行Base64 编码作为JWT的第二部分。
3. Signature
要创建签名部分,需要使用到用Base64编码后header和payloader,以及秘钥,将它们签名,一个典型的格式如下:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
JWT是如何使用的
来说下最常见的应用场景,即认证方面,如图所示。客户端通过用户名密码向服务器请求获取某用户的信息,包括用户一些额外信息,比如权限,这些信息经过加密以JWT形式返回。获取到该JWT的客户端,在以后的每次请求中,都需要携带该JWT,这样做的好处就是每次不需要查询数据库获取该用户的信息,在微服务这样的分布式系统中,可以实现单点登录。
扫码关注公众号有惊喜
(转载本站文章请注明作者和出处 方志朋的博客)
JSON Web Tokens介绍的更多相关文章
- JSON WEB TOKENS
用JWT来保护我们的ASP.NET Core Web API 在上一篇博客中,自己动手写了一个Middleware来处理API的授权验证,现在就采用另外一种方式来处理这个授权验证的问题,毕竟现在也 ...
- [Node.js] Creating JWTs (JSON Web Tokens) in Node
In this lesson we will look at all of the pieces that combine together to create a JWT (j AWT) or JS ...
- JSON Web Tokens(JWT)
现在API越来越流行,如何安全保护这些API? JSON Web Tokens(JWT)能提供基于JSON格式的安全认证.它有以下特点: JWT是跨不同语言的,JWT可以在 .NET, Python, ...
- JSON Web Tokens测试工具
JSON Web Tokens官方提供测试工具https://jwt.io某些静态资料需要链接google.twitter服务器,被墙无法访问.现在提供可以方法测试工具http://hingtai.c ...
- Implement JSON Web Tokens Authentication in ASP.NET Web API and Identity 2.1 Part 3 (by TAISEER)
http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-an ...
- Java分布式:JWT(JSON Web Tokens)
Java分布式:JWT(JSON Web Tokens) 0.优势 Session方式存储用户状态占用大量服务器内存.一般而言,大型应用还需要借助一些KV数据库和一系列缓存机制来实现Session的存 ...
- 服务安全-JWT(JSON Web Tokens):百科
ylbtech-服务安全-JWT(JSON Web Tokens):百科 JSON Web Tokens是一种开放的行业标准 RFC 7519方法,用于在双方之间安全地表示索赔. JWT.IO允许您解 ...
- JWT & JSON Web Tokens
JSON Web Tokens https://jwt.io json web token example https://jwt.io/introduction/ https://medium.co ...
- [翻译]Introduction to JSON Web Tokens
JWT: Json Web Tokens JWT是一种开放标准(RFC 7519),它定义了一种紧凑且独立的方式,用于将各方之间的信息安全地传输为JSON对象.因为它是经过数字签名的,所以该信息可以进 ...
随机推荐
- 【SoapUI】http接口测试
一.接口介绍 API(Application Programming Interface,应用程序编程接口) 1.硬件接口 USB接口 硬盘接口 SD卡接口 LAN口和WAN口 CONSOLE口 .. ...
- sql使用自连接去重复查询
查询公司与公司最新刷新的一条信息 select t1.userid,t1.id,t1.title,t1.RegType,t1.Salary,t1.SubjectID,t1.RefreshTime,t2 ...
- 2017年9月22日 关于JS数组
JS数组 JS数组的定义方法 var arr = []; var arr = new Array() JS数组属性 长度 arr.length 遍历数组 索引值:从0开始数 第一种方法 for(var ...
- java输出九九乘法口诀表
使用双重for循环输出九九乘法口诀表 public static void main(String[] args){ formula();} /** * for 循环实现9*9乘法口诀表 * &quo ...
- FTP FileZilla Server 本地加密C# 实现
最近公司要做一个资料管理模块,因系统是C/S架构,原来小文件都是直接使用7Z压缩后保存到SQL Server数据库 而资料管理模块也就是文件上传,下载加权限管理,考虑文件较多,还可能比较大,所以打算在 ...
- 关于Android那些事
1.开发Activity步骤 第一步:写一个类继承Activity 第二步:重写oncreate方法 第三步:在主配置文件中注册activity <activity android:name=& ...
- vue 音乐播放器报错
使用Vue报错[Vue warn]: Error in nextTick: "TypeError: fn.bind is not a function"页面进不去. 检查:看看da ...
- CSS如何设置换行文字自动对齐
CSS如何设置换行文字自动对齐 如图所示: 代码实现如下: <ul class='warn-page-content'> <li> ...
- Linux服务器性能评估与优化(二)
网络内容总结(感谢原创) 1.Linux内核参数优化 内核参数是用户和系统内核之间交互的一个接口,通过这个接口,用户可以在系统运行的同时动态更新内核配置,而这些内核参数是通过Linux Proc文件系 ...
- 21_AOP_Advice增强2(异常、引介)
[异常抛出增强] 异常抛出异常最适合的应用场景:事务管理. 当参与事务的某个Dao发生异常时,事务管理器就必须回滚事务. [异常抛出增强 例子] [操作数据库的Dao类:PersonDao.java] ...