likes
comments
collection
share

你知道JWT是干嘛的吗?😜

作者站长头像
站长
· 阅读数 39

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络应用间传递声明式信息。它可以安全地将 用户声明权限信息 和其他 元数据 作为 JSON对象 传输,并使用 数字签名 进行验证和信任。JWT 在现代身份验证和授权机制中得到广泛应用,特别适用于 无状态、分布式 系统的身份验证需求

接下来就来好好了解下它吧

你知道JWT是干嘛的吗?😜

JWT的组成

JWT由 三部分 组成,它们通过点号 . 进行分隔:

  • 头部(Header):头部包含两部分信息:令牌的类型 和 所使用的 摘要算法。通常,JWT令牌的类型为 "JWT",算法可以是 HMAC 或者其他自定义算法
   {
     "alg": "HS256",
     "typ": "JWT"
   }
  • 载荷(Payload):载荷是JWT的主要信息存储部分,可以包含任意数量的声明(claims)。声明是关于实体(通常是用户)和其他数据的声明性语句,有三种类型的声明:注册声明公共声明私有声明。注册声明包含一些 标准化 的字段,如发布者、过期时间等。公共声明包含自定义字段,供受信任的各方使用。私有声明是自定义的声明,用于在特定应用中定义私有的声明内容
   {
     "sub": "1234567890",
     "name": "yy",
     "admin": true
   }
  • 签名(Signature):签名用于验证消息的 完整性。签名由头部和载荷部分的 base64Url 编码数据,加上一个密钥,最后通过 header 里指定的摘要算法生成
   HMACSHA256(
     base64UrlEncode(header) + "." +
     base64UrlEncode(payload),
     secret
   )

JWT的工作流程

工作流程如下所示:

  1. 认证:用户在进行身份验证时,向服务器发送 用户名和密码 等凭据
  2. 生成JWT:服务器验证凭据后,生成一个JWT,并将 用户信息 和其他相关信息编码为JWT的载荷部分
  3. 返回JWT:服务器将生成的JWT发送回客户端
  4. 存储JWT:客户端将JWT存储在本地,通常使用浏览器的本地存储机制(如localStorage、cookie)
  5. 请求授权:客户端在后续的请求中,将JWT作为身份验证凭据附加到请求的头部或其他适当的位置
  6. 验证JWT:服务器接收到请求后,验证JWT的签名,并解码其中的信息
  7. 授权访问:服务器根据JWT中的信息,验证用户的身份和权限,并进行相应的授权操作

JWT 的优势

JWT在身份验证和授权机制中具有以下优势:

  • 无状态:JWT是无状态的,服务端不需要保存用户的 会话信息,提高了系统的可扩展性和性能
  • 跨域支持:JWT可以在不同的域和服务之间安全地传输,并且可以用于跨域认证
  • 自包含性:JWT载荷部分可以包含用户声明、权限信息和其他元数据,减少了对数据库的频繁查询
  • 可靠性和安全性:JWT使用 数字签名 进行验证和信任,防止数据篡改和伪造
  • 灵活性:JWT可以根据需求定制不同的声明和算法,适用于多种场景和应用需求

你知道JWT是干嘛的吗?😜

结语

JWT是一种强大的身份验证和授权机制,通过将用户声明和权限信息封装在JSON对象中,实现了无状态、可扩展和安全的身份验证。它在现代的网络应用中得到广泛应用,并提供了简单、灵活且可靠的解决方案,通过理解和应用JWT,我们可以构建更安全、高效的系统,并提供更优质的用户体验

都看到这里啦,如果本篇文章对你有帮助,希望能 点个赞👍 支持下啦,你们的支持才是我最大的动力!😘

你知道JWT是干嘛的吗?😜

转载自:https://juejin.cn/post/7247050634191716410
评论
请登录