自学内容网 自学内容网

jwt详解

基本构成

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 
}


原文地址:https://blog.csdn.net/vh_127/article/details/144331058

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!