JWT(JSON Web Tokens)

什么是JW?

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519)

JWT构成

JWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串。就像这样:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

分为头部,载荷,签证信息,之间用.分割。

为什么要用JWT

基于token的认证机制的应用不需要考虑用户在哪一台服务器登录,为应用拓展提供了便利性。

怎么用

一般是在请求头里加入Authorization,并加上Bearer标注:

fetch('api/user/1', {
  headers: {
    'Authorization': 'Bearer ' + token
  }
})

服务端会验证token,通过则会返回相应的资源。 jwt流程

总结

优点

  • 由于json的通用性,所以可以跨语言
  • payload部分可以承载部分非敏感信息
  • 构成简单,占用空间少,便于传输
  • 不需要在服务端保存会话信息,易于应用扩展

安全相关

  • payload部分不存放敏感信息
  • 保护好secret私钥
  • 尽量使用https协议,保护token不外泄