LOADING

加载过慢请开启缓存 浏览器默认开启

深入了解JWT(JSON Web Token)

2023/11/30 Web开发 JWT

什么是JWT?

JWT是一种开放标准(RFC 7519),定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息。它通常用于在网络上的两个系统之间进行身份验证和信息传递。

JWT的结构

一个JWT通常由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

  • 头部(Header)

头部通常包含两部分信息:令牌的类型(”typ”)和所使用的算法(”alg”)。

{
  "alg": "HS256",
  "typ": "JWT"
}
  • 载荷(Payload)

载荷包含了一系列声明,表示要传递的用户信息。

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

这个负载包含了一些声明(claims),包括 “sub”(主题,通常是用户的唯一标识)、”name”(姓名)、”iat”(发布时间,即令牌的创建时间)等。

  • 签名(Signature)

签名用于验证发送者的身份,确保令牌在传输过程中没有被篡改。

JWT的生成与验证

假设服务器端使用密钥 “secret” 进行签名,生成JWT的过程如下:

# Base64编码的头部
eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9

# Base64编码的载荷
eyJzdWIiOiAiMTIzNDU2Nzg5MCIsICJuYW1lIjogIkpvaG4gRG9lIiwgImlhdCI6IDE1MTYyMzkwMjJ9

# HMAC SHA256签名
UJfr8bN4blKnFCD3V2pYxaLZXrsd4dhl6ZlMz1Y9nOM

最终,JWT 就是将编码后的头部、负载和签名用点(.)连接在一起:

eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJzdWIiOiAiMTIzNDU2Nzg5MCIsICJuYW1lIjogIkpvaG4gRG9lIiwgImlhdCI6IDE1MTYyMzkwMjJ9.UJfr8bN4blKnFCD3V2pYxaLZXrsd4dhl6ZlMz1Y9nOM

客户端收到JWT后,可以通过解码 Base64 部分查看头部和载荷,然后使用密钥验证签名的合法性。

JWT的应用场景

  • 身份验证: JWT经常用于身份验证机制,允许用户在不同系统之间无需再次登录。
  • 信息传递: JWT可用于在系统之间安全地传递信息,如用户权限、个人信息等。

结语

JWT是一种灵活且安全的标准,广泛应用于现代网络开发中。了解JWT的结构和原理有助于更好地理解和使用这一技术。

以上示例展示了JWT的生成和验证过程,希望对你理解JWT有所帮助!

载入天数...载入时分秒...