前言

再移植一个Java项目的时候,遇到了jwt Token,于是就研究了一下

介绍

JWT是什么

json web token(JWT)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。它是以JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输。在数据传输过程中还可以完成数据加密、签名等相关处理。

http协议无状态的,所以需要sessionId或token的鉴权机制,jwt的token认证机制不需要在服务端再保留用户的认证信息或会话信息。这就意味着基于jwt认证机制的应用程序不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利,jwt更适用于分布式应用

jwt由三部分组成

分别为HeaderPayloadSignature

Header

  • 参数类型-jwt
  • 签名的算法-hs256

最后经过Base64进行编码

Payload

  • iss:Issuer,发行者
  • sub:Subject,主题
  • aud:Audience,观众
  • exp:Expiration time,过期时间
  • nbf:Not before
  • iat:Issued at,发行时间
  • jti:JWT ID

Signature

先是用 Base64 编码的 header 和 payload ,再用加密算法加密一下,加密的时候要放进去一个 Secret ,这个相当于是一个密码,这个密码秘密地存储在服务端。

总结

通俗来讲,就是将Header、Payload、Signature分别进行Base64编码,然后用[.]连接起来,进行解密就是先用[.]将Token分割为三份,分别进行Base64解码即可

最后修改:2022 年 04 月 27 日
如果觉得我的文章对你有用,请随意赞赏