一、JWT应用
JWT(JSON Web Token)通常被用于鉴权机制中的 token 实现。
JWT 是一种开放标准,定义了一种紧凑、自包含的方式,用于在各方之间安全地传输信息。在鉴权机制中,当用户登录成功后,服务器可以将用户的身份信息封装在 JWT 中,并将其作为 token 发送给客户端。客户端可以将该 token 存储在本地,以便在每个后续请求中使用。每个请求都会携带该 token,服务器会对 token 进行解析,并根据其中的信息进行鉴权处理。
JWT 具有以下优点:
-
简单:JWT 是一种简单的方式来将用户身份信息封装在 token 中,适用于分布式系统。
-
自包含:JWT 包含了用户身份信息,因此不需要查询数据库或其他存储介质。
-
可验证:服务器可以验证 JWT 是否被篡改,以及 JWT 是否由服务器签发。
-
可扩展:JWT 允许扩展性,可以将其他有用的信息添加到 JWT 中,以便在后续请求中使用。
-
跨语言:由于 JWT 是基于 JSON 格式的标准,因此可以在不同编程语言之间进行交互。
二、JWT组成
分割成的三部分分别是Header头部,Payload负载,Signature签名 。
即 Header.Payload.Signature
-
JWT是不加密的,任何人都可以读的到其中的信息,其中第一部分 Header 和第二部分 Payload 只是对原始输入的信息转成了base64编码,第三部分Signature是用header+payload+secret_key进行加密的结果。
-
因为JWT不会对结果进行加密,所以不要保存敏感信息在Header或者Payload中,服务端也主要依靠最后的 Signature 来验证Token是否有效以及有无被篡改。
-
可以直接用 base64 对 Header 和 Payload 进行解码得到相应的信息。