转载请标明出处:

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介绍的更多相关文章

  1. JSON WEB TOKENS

    用JWT来保护我们的ASP.NET Core Web API   在上一篇博客中,自己动手写了一个Middleware来处理API的授权验证,现在就采用另外一种方式来处理这个授权验证的问题,毕竟现在也 ...

  2. [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 ...

  3. JSON Web Tokens(JWT)

    现在API越来越流行,如何安全保护这些API? JSON Web Tokens(JWT)能提供基于JSON格式的安全认证.它有以下特点: JWT是跨不同语言的,JWT可以在 .NET, Python, ...

  4. JSON Web Tokens测试工具

    JSON Web Tokens官方提供测试工具https://jwt.io某些静态资料需要链接google.twitter服务器,被墙无法访问.现在提供可以方法测试工具http://hingtai.c ...

  5. 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 ...

  6. Java分布式:JWT(JSON Web Tokens)

    Java分布式:JWT(JSON Web Tokens) 0.优势 Session方式存储用户状态占用大量服务器内存.一般而言,大型应用还需要借助一些KV数据库和一系列缓存机制来实现Session的存 ...

  7. 服务安全-JWT(JSON Web Tokens):百科

    ylbtech-服务安全-JWT(JSON Web Tokens):百科 JSON Web Tokens是一种开放的行业标准 RFC 7519方法,用于在双方之间安全地表示索赔. JWT.IO允许您解 ...

  8. JWT & JSON Web Tokens

    JSON Web Tokens https://jwt.io json web token example https://jwt.io/introduction/ https://medium.co ...

  9. [翻译]Introduction to JSON Web Tokens

    JWT: Json Web Tokens JWT是一种开放标准(RFC 7519),它定义了一种紧凑且独立的方式,用于将各方之间的信息安全地传输为JSON对象.因为它是经过数字签名的,所以该信息可以进 ...

随机推荐

  1. 安恒杯11月月赛web题目-ezsql详细记录

    通过此题目可以学习到 1.通过load_file+like来盲注获取文件内容 2.php魔术方法__get函数的用法 3.bypass  linux命令过滤 题目中给了注册和登录的功能,没有源码泄露 ...

  2. ASP.NET MVC 生命周期

    本文的目的旨在详细描述ASP.NET MVC请求从开始到结束的每一个过程.我希望能理解在浏览器输入URL并敲击回车来请求一个ASP.NET MVC网站的页面之后发生的任何事情. 为什么需要关心这些?有 ...

  3. [转]MVC+JQuery validate实现用户输入验证

    本文转自:http://www.cnblogs.com/ahui/archive/2010/10/08/1845677.html MVC服务器端: 1.在controller中验证用户输入,如果验证失 ...

  4. C#博客记录一

    前言:C#语言是由微软公司开发面向大众的一款软件开发语言. 1.c语音的输出语句为Console.Write();和Console.WriteLine(); 两者区别为后者为换行输出,前者不换行. 2 ...

  5. small zhishi

    \\192.168.1.201\d$\Data 访问远程计算机文件资源管理器

  6. 动态网页开发jsp

    1.动态网页的优势?    ①交互性:即网页会根据用户的要求和选择而动态改变和显示内容.    ③自动更新:即无需改变页面代码,便会自动生成新的页面内容.    ④随机性:即当不同的时间.不同的人访问 ...

  7. mybatis简单示例

    1.引入mybatis.jar mysql-connector-java-5.1.47.jar <dependency> <groupId>org.mybatis</gr ...

  8. kafka自定义序列化器

    <kafka权威指南> Customer.java public class Customer { private int customId; private String custome ...

  9. for ...in 、for each ...in、 for...of(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)

    1.for in for...in语句以任意顺序遍历一个对象的可枚举性.对于每个不同的属性,语句都会被执行. 语法 for (variable in object) {...} variable 在每 ...

  10. Eclipse Configuration

    *** Date: 2013年9月12日星期四中国标准时间上午8时41分50秒 *** Platform Details: *** System properties:applicationXMI=o ...