JWT身份认证机制原理与实现

需积分: 0 1 下载量 140 浏览量 更新于2024-08-05 收藏 1.68MB PDF 举报
JWT学习笔记 背景了解户身份认证的种式,主要有两种:Session验证和Token验证。 **Session验证** Session验证是传统的身份认证方式。其流程如下: 1. 客户端使用用户名和密码请求登录。 2. 服务端接收请求,验证信息,成功后,在当前对话(session)保存相关数据,如用户信息、登录时间等。 3. 服务器向用户返回一个session_id,写入客户端的Cookie。 4.往后客户端每次向服务端请求资源时,都会通过Cookie,将session_id传回服务器。 5. 服务端收到session_id,找到前期保存的数据,由此得知用户的身份,如果验证成功,正常返回客户端响应数据。 Session验证的特点是: * 数据存放在服务器端 * 服务器端资源开销大 * 存储时间短,需要服务器设置 * 服务器如果挂掉了需要重新登录 **Token验证** Token验证是另一种身份认证方式。其流程如下: 1. 客户端使用用户名和密码请求登录。 2. 服务端接收请求,验证信息,成功后,服务端返回一个token。 3. 客户端收到token后可以将其存储起来,例如Cookie或localStorage。 4.往后客户端每次向服务端请求资源时都需要携带这个token,可以通过Cookie或者header携带。 5. 服务端接收请求,验证token,如果验证成功,正常返回客户端响应数据。 Token验证的特点是: * 节约服务器资源 * CPU消耗大 **JWT(JSON Web Token)** JWT是Token验证的一种具体实现方式。其工作原理是: 用户的信息通过Token字符串的形式,保存在客户端浏览器中,服务器通过还原Token字符串的形式来认证用户的身份。Token字符串通常由三部分组成:Header(头部)、Payload(有效荷载)、Signature(签名)。其中Payload是真正的用户信息,加密后的字符串;Header和Signature是安全相关的部分,保证Token的安全性。 使用JWT的方式是: * 客户端收到服务器返回的JWT后,通常会将它存储在localStorage或sessionStorage中。 * 此后,客户端每次与服务端通信,都要带上这个JWT的字符串,从而进行身份认证。 推荐的做法是把JWT放在HTTP请求头的Authorization字段中,格式如下: Authorization:Bearer <JWT字符串> 总结来说,Session验证和Token验证是两种不同的身份认证方式,Session验证数据存放在服务器端,Token验证数据存放在客户端。JWT是Token验证的一种具体实现方式,使用Token字符串来认证用户的身份。