JWT(JSON Web Tokens)

1.JWT即JSON Web Tokens,他可以用来安全的传递信息,因为这些信息是经过数字签名的

2.JWT可以使用一种加密算法比如HMAC 算法,也可以使用公钥/私钥的非对称算法

3.因为JWT签名后的信息够短,可以放在url里、request body里、http header里,传输够快。

4.荷载信息里包含所有你想要的,避免不止一次的去查询数据库

5.JWT的使用场景主要包括:

  1) 认证,这是比较常见的使用场景,只要用户登录过一次系统,之后的请求都会包含签名出来的token,通过token也可以用来实现单点登录。

  2)交换信息,通过使用密钥对来安全的传送信息,可以知道发送者是谁、放置消息被篡改。

6.JSON Web Tokens由三部分组成,用英文句点分割(.) ,一般看起来例如:xxxxx.yyyyy.zzzzz

分为:

  • Header  头信息
  • Payload  荷载信息,实际数据
  • Signature  由头信息+荷载信息+密钥 组合之后进行加密得到

  1) Header 头信息通常包含两部分,type:代表token的类型,这里使用的是JWT类型。 alg:使用的Hash算法,例如HMAC SHA256或RSA.

{
  "alg": "HS256",
  "typ": "JWT"
}// 这会被经过base64Url编码形成第一部分

  2)Payload  一个token的第二个部分是荷载信息,它包含一些声明Claim(实体的描述,通常是一个User信息,还包括一些其他的元数据)

    声明分三类:

    1)Reserved Claims,这是一套预定义的声明,并不是必须的,这是一套易于使用、操作性强的声明。包括:iss(issuer)、exp(expiration time)、sub(subject)、aud(audience)等

    2)Plubic Claims,

    3)Private Claims,交换信息的双方自定义的声明

  

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}// 同样经过Base64Url编码后形成第二部分

  3) signature  使用header中指定的算法将编码后的header、编码后的payload、一个secret进行加密

  例如使用的是HMAC SHA256算法,大致流程类似于: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

  这个signature字段被用来确认JWT信息的发送者是谁,并保证信息没有被修改

7.这个JSON Web Tokens包含了必要的用户信息,减少了对数据库进行多次查询的需要。

8.由于没有使用Cookies,Cross-Origin Resource Sharing (CORS) ,跨域的资源访问不会成为问题。

JWT官网有一张图描述了JWT的认证过程:

时间: 2024-08-13 20:45:01

JWT(JSON Web Tokens)的相关文章

JSON Web Tokens(JWT)

现在API越来越流行,如何安全保护这些API? JSON Web Tokens(JWT)能提供基于JSON格式的安全认证.它有以下特点: JWT是跨不同语言的,JWT可以在 .NET, Python, Node.js, Java, PHP, Ruby, Go, JavaScript和Haskell中使用 JWT是自我包涵的,它们包含了必要的所有信息,这就意味着JWT能够传递关于它自己的基本信息,比如用户信息和签名等. JWT传递是容易的,因为JWT是自我包涵,它们能被完美用在HTTP头部中,当需

JSON WEB TOKENS

用JWT来保护我们的ASP.NET Core Web API 在上一篇博客中,自己动手写了一个Middleware来处理API的授权验证,现在就采用另外一种方式来处理这个授权验证的问题,毕竟现在也 有不少开源的东西可以用,今天用的是JWT. 什么是JWT呢?JWT的全称是JSON WEB TOKENS,是一种自包含令牌格式.官方网址:https://jwt.io/,或多或少应该都有听过这个. 先来看看下面的两个图: 站点是通过RPC的方式来访问api取得资源的,当站点是直接访问api,没有拿到有

JSON Web Tokens的实现原理

前言 最近在做一个python项目的改造,将python项目重构为java项目,过程中遇到了这个知识点,觉得这个蛮实用的,所以下班后回来趁热打铁写下这篇总结,希望后面的人能够有所借鉴,少走弯路. 一.优势简介 JSON Web Tokens简称jwt,是rest接口的一种安全策略.本身有很多的优势: 解决跨域问题:这种基于Token的访问策略可以克服cookies的跨域问题. 服务端无状态可以横向扩展,Token可完成认证,无需存储Session. 系统解耦,Token携带所有的用户信息,无需绑

[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 JSON Web Token. You will use node to create a JWT, and then verify it in the JWT debugger. What is the JSON Web Token structure? JSON Web Tokens consist

Go实战--golang中使用JWT(JSON Web Token)

http://blog.csdn.net/wangshubo1989/article/details/74529333 之前写过关于golang中如何使用cookie的博客: 实战–go中使用cookie 今天就来跟大家简单介绍一下golang中如何使用token,当然是要依赖一下github上的优秀的开源库了. 首先,要搞明白一个问题,token.cookie.session的区别. token.cookie.session的区别 Cookie Cookie总是保存在客户端中,按在客户端中的存

深入浅出JWT(JSON Web Token )

原文:深入浅出JWT(JSON Web Token ) 1. JWT 介绍 JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-contained)的方式,用于在各方之间以JSON对象安全传输信息. 这些信息可以通过数字签名进行验证和信任. 可以使用秘密(使用HMAC算法)或使用RSA的公钥/私钥对对JWT进行签名. 虽然JWT可以加密以提供各方之间的保密性,但我们将重点关注已签名的令牌. 签名的令牌可以验证其中包含的

Implement JSON Web Tokens Authentication in ASP.NET Web API and Identity 2.1

http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2/ Currently our API doesn’t support authentication and authorization, all the requests we receive to any end point are done anonymously, I

JWT(JSON Web Token) Java与.Net简单编码实现

参考 JWT(JSON WEB TOKENS)-一种无状态的认证机制 基于Token的WEB后台认证机制 各种语言版本的基于HMAC-SHA256的base64加密 Java与.Net实现实现 // java HMacsha256 private static final String MAC_INSTANCE_NAME = "HMacSHA256"; public static String Hmacsha256(String secret, String message) thro

什么是 JWT -- JSON WEB TOKEN

转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景.JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密. 起