基本构成
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
- function createJWT(header, payload, secret)
- {
- encodedHeader = Base64UrlEncode(header)
- encodedPayload = Base64UrlEncode(payload)
- signature = HMACSHA256(encodedHeader + "." + encodedPayload, secret)
- return encodedHeader + "." + encodedPayload + "." + signature
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |