exp是指到期日期吗(一分钟带你了解JWT认证)


exp是指到期日期吗(一分钟带你了解JWT认证)

一、JWT概述

JSON Web Token(JWT)是一种基于开放标准(RFC 7519)的认证方式,它以紧凑、自包含的形式在各方之间安全地传输JSON格式的信息。由于其数字签名的特性,使得传输的信息可以被验证和信任。更多关于JWT的详细信息可以在官方网站上查看:[jwt.io/introduction/]

二、JWT认证与session认证的区别

session认证:由于HTTP协议是无状态的,用户在进行身份验证时,服务器需要在服务端存储用户的会话信息。服务器将用户登录信息存储在服务器中,并在响应时将其发送给浏览器,生成cookie以供下次请求时识别用户身份。这就是基于session的认证方式。

JWT认证:基于token的授权机制与HTTP协议一样是无状态的,无需在服务端保留用户的认证或会话信息。这意味着使用JWT认证的应用无需关心用户在哪台服务器上登录,这为应用的扩展提供了便利。

三、JWT认证流程简述

用户通过账号和密码发送post请求;服务器使用私钥生成一个JWT;服务器将JWT返回给浏览器;浏览器在请求头中包含此JWT发送给服务器;服务器验证JWT的有效性;服务器返回资源响应给浏览器。

四、JWT的组成部分

让我们先来看一下JWT信息的截图:

JWT主要由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

头部(Header):包含两部分信息,声明类型为JWT,以及加密的算法,通常直接使用HMAC SHA256。头部通常采用Base64加密。示例:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9。

载荷(Payload):这部分通常包含一些有效信息。JWT的标准定义包含五个字段,如签发者(iss)、面向的用户(sub)、接收JWT的一方(aud)、过期时间(exp)以及签发时间(iat)等。示例略。

签名(Signature):前两部分都使用Base64进行编码,前端可以解码获取其中的信息。Signature需要使用编码后的header和payload以及一个密钥,使用header中指定的签名算法(如HS256)进行签名。签名的目的是确保JWT没有被篡改。三个部分通过.连接在一起,就构成了我们的JWT。需要注意的是,密钥用于签发和验证JWT,是服务端的私钥,不应。

五、JWT的使用场景

JWT的主要使用场景如下:

授权:这是JWT最常用的场景。一旦用户登录,每个后续的请求都会包含JWT,允许用户访问该令牌授权的路由、服务和资源。

信息交换:由于JWT可以进行签名,因此可以确保发件人是他们声称的人。由于签名是根据标头和有效负载计算的,因此还可以验证内容是否未被篡改,这使得JSON格式的信息可以在各方之间安全地传输。


exp是指到期日期吗(一分钟带你了解JWT认证)