searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

JWT介绍

2023-09-05 03:12:39
5
0
  1. JWT的介绍

JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它由三部分组成,以点号分隔:“Header”、“Payload”和“Signature”组成。

  • Header(头部):包含了两个部分,即令牌的类型(通常是JWT)和所使用的签名算法(如HMAC、SHA256或RSA)。它使用Base64编码进行序列化。
  • Payload(负载):包含了一些称为声明(Claims)的信息,用于描述用户、角色和其他相关数据。有三种类型的声明:
  • Registered Claims(注册声明):这些是一些预定义的声明,包括iss(签发者)、sub(主题)、aud(受众)、exp(过期时间)和nbf(生效时间)等。
  • Public Claims(公共声明):这些是用户自定义的声明,可以根据需要添加。
  • Private Claims(私有声明):这些也是用户自定义的声明,但是为了避免冲突,需要定义一个命名空间,以确保不同的声明互不干扰。
  • Payload也使用Base64编码进行序列化。
  • Signature(签名):使用指定的算法和密钥对头部和负载进行加密生成的签名。该签名用于验证传输过程中令牌是否被篡改。

 

 

  1. JWT的工作流程

工作流程如下:

  • 用户通过前端的Web表单将自己的用户名和密码发送到后端的接口进行身份验证。
  • 服务器根据用户提供的凭证验证用户的身份,将包含用户信息的数据作为JWT的Payload,将其与JWT Header分别进行Base64编码拼接后签名,形成一个JWT Token。
  • 后端服务器将JWT Token字符串作为登录成功的结果返回给前端。
  • 前端在每次请求中都需要在请求头或请求参数中带上JWT,一般放在HTTP请求头中的Authorization属性中。
  • 服务器验证JWT的签名和有效期,验证其有效性,比如签名是否正确、请求是否国企。
  • 如果验证通过,服务器可以根据JWT中的声明授权用户访问相应的资源。

 

 

  1. JWT的优点
  • JWT是一种轻量级的认证方案,因为它使用JSON进行数据传输。
  • JWT是无状态的,服务器不需要在后端存储会话信息,减轻了服务器的负担。
  • JWT可以被广泛支持,因为它是一个开放的标准。
  • 通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。

 

  1. JWT的缺陷
  • 由于JWT在负载中携带了用户信息,因此不适合在负载中存储敏感信息,如密码。
  • 由于JWT的所有信息都存储在客户端,当令牌被盗用时,服务器无法主动废止令牌,除非使用黑名单等额外措施。
  • JWT令牌较长,占存储空间比较大。
0条评论
作者已关闭评论
y****n
7文章数
0粉丝数
y****n
7 文章 | 0 粉丝
y****n
7文章数
0粉丝数
y****n
7 文章 | 0 粉丝
原创

JWT介绍

2023-09-05 03:12:39
5
0
  1. JWT的介绍

JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它由三部分组成,以点号分隔:“Header”、“Payload”和“Signature”组成。

  • Header(头部):包含了两个部分,即令牌的类型(通常是JWT)和所使用的签名算法(如HMAC、SHA256或RSA)。它使用Base64编码进行序列化。
  • Payload(负载):包含了一些称为声明(Claims)的信息,用于描述用户、角色和其他相关数据。有三种类型的声明:
  • Registered Claims(注册声明):这些是一些预定义的声明,包括iss(签发者)、sub(主题)、aud(受众)、exp(过期时间)和nbf(生效时间)等。
  • Public Claims(公共声明):这些是用户自定义的声明,可以根据需要添加。
  • Private Claims(私有声明):这些也是用户自定义的声明,但是为了避免冲突,需要定义一个命名空间,以确保不同的声明互不干扰。
  • Payload也使用Base64编码进行序列化。
  • Signature(签名):使用指定的算法和密钥对头部和负载进行加密生成的签名。该签名用于验证传输过程中令牌是否被篡改。

 

 

  1. JWT的工作流程

工作流程如下:

  • 用户通过前端的Web表单将自己的用户名和密码发送到后端的接口进行身份验证。
  • 服务器根据用户提供的凭证验证用户的身份,将包含用户信息的数据作为JWT的Payload,将其与JWT Header分别进行Base64编码拼接后签名,形成一个JWT Token。
  • 后端服务器将JWT Token字符串作为登录成功的结果返回给前端。
  • 前端在每次请求中都需要在请求头或请求参数中带上JWT,一般放在HTTP请求头中的Authorization属性中。
  • 服务器验证JWT的签名和有效期,验证其有效性,比如签名是否正确、请求是否国企。
  • 如果验证通过,服务器可以根据JWT中的声明授权用户访问相应的资源。

 

 

  1. JWT的优点
  • JWT是一种轻量级的认证方案,因为它使用JSON进行数据传输。
  • JWT是无状态的,服务器不需要在后端存储会话信息,减轻了服务器的负担。
  • JWT可以被广泛支持,因为它是一个开放的标准。
  • 通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。

 

  1. JWT的缺陷
  • 由于JWT在负载中携带了用户信息,因此不适合在负载中存储敏感信息,如密码。
  • 由于JWT的所有信息都存储在客户端,当令牌被盗用时,服务器无法主动废止令牌,除非使用黑名单等额外措施。
  • JWT令牌较长,占存储空间比较大。
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0