美文网首页Javaweb前端开发
【5分钟背八股】什么是 Token?什么是 JWT?如何基于To

【5分钟背八股】什么是 Token?什么是 JWT?如何基于To

作者: 废柴程序员 | 来源:发表于2022-07-06 10:54 被阅读0次

    我们知道 Session 信息需要保存一份在服务器端。这种方式会带来一些麻烦,比如需要我们保证保存 Session 信息服务器的可用性、不适合移动端(依赖Cookie)等等。

    有没有一种不需要自己存放 Session 信息就能实现身份验证的方式呢?使用 Token 即可!JWT (JSON Web Token) 就是这种方式的实现,通过这种方式服务器端就不需要保存 Session 数据了,只用在客户端保存服务端返回给客户的 Token 就可以了,扩展性得到提升。

    JWT 本质上就一段签名的 JSON 格式的数据。由于它是带有签名的,因此接收者便可以验证它的真实性。

    下面是 RFC 7519 对 JWT 做的较为正式的定义。

    JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted. ——JSON Web Token (JWT)

    JWT 由 3 部分构成:

    • Header :描述 JWT 的元数据。定义了生成签名的算法以及 Token 的类型。

    • Payload(负载):用来存放实际需要传递的数据

    • Signature(签名):服务器通过Payload、Header和一个密钥(secret)使用 Header 里面指定的签名算法(默认是 HMAC SHA256)生成。

    在基于 Token 进行身份验证的的应用程序中,服务器通过Payload、Header和一个密钥(secret)创建令牌(Token)并将 Token 发送给客户端,客户端将 Token 保存在 Cookie 或者 localStorage 里面,以后客户端发出的所有请求都会携带这个令牌。你可以把它放在 Cookie 里面自动发送,但是这样不能跨域,所以更好的做法是放在 HTTP Header 的 Authorization字段中:Authorization: Bearer Token。

    image.png

    推荐阅读:职业规划:《985、211、一本、二本、三本》2022年完整版进大厂拿高薪方案!

    用户向服务器发送用户名和密码用于登陆系统。

    身份验证服务响应并返回了签名的 JWT,上面包含了用户是谁的内容。

    用户以后每次向后端发请求都在Header中带上 JWT。

    服务端检查 JWT 并从中获取用户相关信息。

    相关文章

      网友评论

        本文标题:【5分钟背八股】什么是 Token?什么是 JWT?如何基于To

        本文链接:https://www.haomeiwen.com/subject/lbxybrtx.html