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)!