jwt详解

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

基本构成

JWT是由三部分组成的字符串,格式为:Header.Payload.Signature(头部负载签名) ,这三部分通过"."毗连在一起。
内部结构

头部(Header): 头部通常由两部分组成:令牌范例(通常是JWT)和所使用的签名算法(如HMAC SHA256或RSA)。 例如,头部的JSON表现可以是: { "alg": "HS256", "typ": "JWT" }  
头部进行Base64Url编码后作为jwt的一部分
载荷(Payload): 载荷部分包罗了声明,这些声明可以是关于实体(通常是用户)及其他数据的声明。声明有三种范例:注册声明、公共声明和私有声明。 例如,载荷的JSON表现可以是: { "sub": "1234567890", "name": "John Doe", "admin": true }
载荷同样必要进行Base64Url编码,形成jwt的第二部分
签名(Signature):  为了防止数据被篡改,JWT必要通过头部和载荷生成签名。签名是通过将编码后的头部和载荷与一个密钥结合,使用指定的算法生成的。 这个签名将确保JWT的完备性,只有持有密钥的人才气生成有效的签名。
签名将作为jwt的第三部分
安全性分析

jwt的安全性依赖于签名部分,只有拥有密钥的用户才气生成有效的JWT。因此,JWT在身份验证和信息交换中非常盛行。它避免了传统的session存储方式带来的服务器负担。
 jwt服务端只必要在本地即可验证真伪,而不必要向数据库中查询token
  1. function createJWT(header, payload, secret)
  2. {
  3.      encodedHeader = Base64UrlEncode(header)
  4.      encodedPayload = Base64UrlEncode(payload)                     
  5.      signature = HMACSHA256(encodedHeader + "." + encodedPayload, secret)
  6.      return encodedHeader + "." + encodedPayload + "." + signature
  7. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表