JWT

99 阅读2分钟

一种验收标准,用于JSON对象在各方之间安全的传递的一种标准

应用场景

  • Authorization (授权)
  • Information Exchange (信息交换)

JSON Web Token的结构

Header

包含token类型和对应加密方式的一个json,然后Base64对这个JSON编码就得到JWT的第一部分

payload

  • Payload JWT的第二部分是payload,它包含声明(要求)。声明是关于实体(通常是用户)和其他数据的声明。声明有三种类型: registered, public 和 private。
  • Registered claims : 这里有一组预定义的声明,它们不是强制的,但是推荐。比如:iss (issuer), exp (expiration time), sub (subject), aud (audience)等。
  • Public claims : 可以随意定义。
  • Private claims : 用于在同意使用它们的各方之间共享信息,并且不是注册的或公开的声明。 在使用Base64编码进行编码,注意,不要在JWT的payload或header中放置敏感信息,除非它们是加密的。

signature 验证是否传递过程中有被修改过的痕迹

HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

签名是用于验证消息在传递过程中有没有被更改,并且,对于使用私钥签名的token,它还可以验证JWT的发送方是否为它所称的发送方。

JWT与Session的差异 相同点是,它们都是存储用户信息;然而,Session是在服务器端的,而JWT是在客户端的

sessions认证和token认证 sessions认证是需要耗费服务器每次存储认证信息,耗费内存

JWT与OAuth的区别 -OAuth2是一种授权框架 ,JWT是一种认证协议 -无论使用哪种方式切记用HTTPS来保证数据的安全性 -OAuth2用在使用第三方账号登录的情况(比如使用weibo, qq, github登录某个app),而JWT是用在前后端分离, 需要简单的对后台API进行保护时使用。

\