JWT

JWT 简介

JWT 是 JSON WEB TOKEN 的缩写,它是基于 RFC 7519 标准定义的一种可以安全传输的的 JSON 对象,由于使用了数字签名,所以是可信任和安全的。

JWT 的组成

  • JWT token 的格式:header.payload.signature
  • header 中用于存放签名的生成算法

    1
    {"alg": "HS512"}
  • payload 中用于存放用户名、token 的生成时间和过期时间

    1
    {"sub":"admin","created":1489079981393,"exp":1489684781}
  • signature 为以 header 和 payload 生成的签名,一旦 header 和 payload 被篡改,验证将失败

    1
    2
    // secret 为加密算法的密钥
    String signature = HMACSHA512(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)

JWT 实例

这是一个 JWT 的字符串

1
eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImNyZWF0ZWQiOjE1NTY3NzkxMjUzMDksImV4cCI6MTU1NzM4MzkyNX0.d-iki0193X0bBOETf2UN3r3PotNIEAV7mzIxxeI5IxFyzzkOZxS0PGfF_SK6wxCv2K8S0cZjMkv6b5bCqc0VBw

可以在该网站上获得解析结果:https://jwt.io/

图一

JWT 实现认证和授权的原理

用户调用登录接口,登录成功后获取到 JWT 的 token;
之后用户每次调用接口都在 http 的 header 中添加一个叫 Authorization 的头,值为 JWT 的 token;
后台程序通过对 Authorization 头中信息的解码及数字签名校验来获取其中的用户信息,从而实现认证和授权。

本文结束啦 感谢您阅读
如果你觉得这篇文章对你有用,欢迎赞赏哦~
0%