一分钟简单了解 JSON Web Token

JSON Web Token(JWT)是一个开放的标准(RFC 7519),它定义了一个紧凑且自包含的方式,用于在各方之间做为 JSON 对象安全地传输信息。因为此信息是通过数字签名的,所以能够被验证和信任。java

今天咱们就来简单的认识一下 JSON Web Token。算法

JWT 认证和 session认证的区别

首先须要说明 JSON Web Token 是能够用于认证的,那么就先来对比一下 JSON Web Token 认证和 传统的 session 认证的区别,传统的 session 认证是有状态的,也就是说咱们须要在服务端保存用户的认证信息,若是服务端从新或者换一台服务器,那么这个认证就失效了,而且传统的 session 的认证方式扩展起来不是那么的容易。安全

基于 JSON Web Token 的鉴权机制相似于 http 协议,是一种无状态的,服务器不须要保存用户的认证信息或者会话信息,这也就意味着 JWT 认证机制的应用不须要去考虑用户在哪一台服务器登陆了,这就为应用的扩展提供了便利,也是因为这个特性,JWT 在微服务架构中应用普遍。服务器

JSON Web Token 的组成

一个 JSON Web Token 实际上就是一个字符串,它由三部分组成:头部、载荷与签名,以下图所示:微信

一、头部(header )

头部用于描述关于该 JSON Web Token 的最基本的信息,例如其类型以及签名所用的算法等,一般以下所示:session

{
    "alg": "HS256",
    "typ": "JWT"
}
  • alg属性:表示签名使用的算法,默认为HMAC SHA256(写为HS256)
  • typ属性:表示令牌的类型,JWT令牌统一写为JWT

头部通常使用 base64 加密,加密后密文:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9架构

二、载荷(payload)

载荷是 JSON Web Token 的主体内容部分,里面存放一些有效信息,JSON Web Token 标准定义中定义了如下 5 个字段:微服务

  • iss: 该JWT的签发者
  • sub: 该JWT所面向的用户
  • aud: 接收该JWT的一方
  • exp(expires): 何时过时,这里是一个Unix时间戳
  • iat(issued at): 在何时签发的

除了标准定义中的字段外,咱们还能够自定义字段,好比在 JWT 中,咱们的载荷信息可能以下:学习

{
    "sub": "1234567890",
    "name": "pingtouge",
    "admin": true
}

咱们须要注意,在默认状况下 JWT 是未加密的,每个人均可以读取其内容,所以在载荷中,不要存放私密信息,防止信息泄露。编码

三、签名(signature)

签名是 JSON Web Token 中比较重要的一部分,前面两部分都是使用 Base64 进行编码的,signature 须要使用编码后的 header 和 payload 以及咱们提供的一个密钥,而后使用 header 中指定的签名算法(HS256)进行签名,签名的做用是保证 JWT 没有被篡改过。

为何须要签名?

对于加密算法来讲,碰撞几率仍是比较小的,通常而言,不一样的输入加密后的输出是不同的,不一样输入产生相同结果的几率仍是至关小的,因此能够利用加密算法的这个特性来判断 JWT 是否被篡改过。

假若有人篡改了载荷中的信息,再进行编码的话,那么新的头部和载荷的签名跟以前的签名是不同的,而且如何加密的密钥不同的话,得出来的签名结果也会不同。

JWT使用场景

  • Authentication(鉴权)

这是使用JWT最多见的状况。 一旦用户登陆,每一个后续请求都将包含JWT,容许用户访问该令牌容许的路由,服务和资源。 单点登陆是当今普遍使用JWT的一项功能,由于它的开销很小,而且可以轻松地跨不一样域使用。

  • Information Exchange(信息交换)

JSON Web Tokens是在各方之间安全传输信息的好方式。 由于JWT能够签名:例如使用公钥/私钥对,因此能够肯定发件人是他们自称的人。 此外,因为使用标头和有效载荷计算签名,所以您还能够验证内容是否未被篡改。

以上就是 JSON Web Token 相关知识,但愿这篇文章对您的学习或者工做有所帮助,若是您以为文章有帮助,欢迎帮忙转发,谢谢。

最后

目前互联网上不少大佬都有 JSON Web Token 相关文章,若有雷同,请多多包涵了。原创不易,码字不易,还但愿你们多多支持。若文中有所错误之处,还望提出,谢谢。

欢迎扫码关注微信公众号:「互联网平头哥」,和平头哥一块儿学习,一块儿进步。

互联网平头哥

相关文章
相关标签/搜索