JWT是干什么的?为什么要用JWT?底层原理是什么?

您所在的位置:网站首页 程序员说的底层是什么 JWT是干什么的?为什么要用JWT?底层原理是什么?

JWT是干什么的?为什么要用JWT?底层原理是什么?

2024-07-17 06:59| 来源: 网络整理| 查看: 265

JWT(JSON Web Token)是一种用于在网络应用中传输信息的开放标准(RFC 7519)。它通常被用于对用户进行身份验证和授权。JWT由三部分组成,每个部分之间使用点(.)进行分隔,这三部分分别是:

Header(头部): 包含了令牌的元数据和加密算法信息。Payload(载荷): 存储了要传输的数据,如用户的身份信息和一些声明。Payload有三种类型:注册的声明(Reserved claims)、公共的声明(Public claims)和私有的声明(Private claims)。Signature(签名): 使用头部指定的加密算法对头部和载荷进行签名,以确保令牌在传输过程中没有被篡改。

为什么要使用JWT?

跨平台和语言:JWT是基于JSON的标准,因此它在不同的编程语言和平台之间都可以轻松传递和解析。

状态无关性:传统的会话认证在服务端需要保存用户的会话状态,而JWT是无状态的,所有信息都被包含在令牌本身中,这使得服务端不需要保存任何状态信息,从而降低了服务端的负担。

安全性:JWT的签名保证了令牌的完整性和真实性,确保信息不会在传输过程中被篡改或伪造。同时,由于JWT是基于标准的,可以使用加密算法来保护敏感信息,确保令牌只能被可信的接收方解密。

扩展性:由于JWT允许在Payload中添加自定义的声明,因此可以在令牌中携带更多的用户信息和相关权限,满足不同应用的需求。

底层原理:

JWT的底层原理主要是基于数字签名和加密算法。当用户进行身份认证时,服务端验证用户的身份,如果验证成功,服务端会生成一个JWT并将其返回给客户端。客户端在后续的请求中通过将JWT放在请求的头部(通常是Authorization头部)或其他方式进行传递。服务端在接收到请求后,会解析JWT,并验证其签名的有效性,从而确定用户的身份和权限。

签名验证的过程如下:

服务端收到请求后,从请求头部(或其他指定位置)获取JWT。使用相同的密钥和算法,对JWT中的头部和载荷进行签名计算。将计算得到的签名与JWT中的签名部分进行比较,如果一致,则说明JWT没有被篡改。

这样,服务端可以确信JWT的内容是可信的,因为只有拥有正确密钥的服务端才能生成有效的签名。同时,由于JWT中包含了用户信息和权限声明,服务端可以通过解析JWT获取到这些信息,无需再进行数据库查询,从而提高了性能。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3