type
status
date
slug
summary
tags
category
icon
password
JSON Web Tokens(JWTs)是一种用于身份验证和授权的轻量级标准,它基于令牌(token)机制。以下是JWT的工作原理的简要概述:
- 创建JWT:
- Header(头部):JWT的头部通常包含了两部分信息,即令牌类型(JWT)和所使用的签名算法,例如HMAC SHA256或RSA。
- Payload(载荷):JWT的载荷包含了有关用户或其他数据的信息,这些信息被称为"claims"(声明)。有三种类型的声明:注册声明(registered claims),公共声明(public claims),和私有声明(private claims)。
- Signature(签名):为了创建签名部分,使用头部指定的签名算法对编码后的头部、编码后的载荷和秘钥进行签名。签名用于验证JWT的完整性。
- 签名生成:使用头部中指定的签名算法,将编码后的头部和编码后的载荷与秘钥一起进行哈希运算生成签名。
- 生成JWT:将编码后的头部、编码后的载荷和签名组合成一个JWT,形成形如`Header.Payload.Signature`的字符串。
- 传输JWT:通常,JWT被作为HTTP请求的一部分或在请求头中发送给服务器,或者作为Cookie传输给服务器。
- 服务器验证JWT:
- 当服务器接收到JWT后,它会解码JWT,获取头部和载荷中的信息,以及秘钥。
- 使用与创建JWT相同的签名算法,对解码后的头部和载荷再次进行哈希运算,然后将结果与JWT中的签名部分进行比较。
- 如果服务器的计算签名与JWT中的签名相匹配,说明JWT未被篡改,服务器可以信任JWT中的信息。如果签名不匹配,则服务器拒绝接受JWT。
- 使用JWT:一旦服务器验证了JWT,它可以使用JWT中的信息来完成身份验证、授权或其他操作。例如,服务器可以提取用户ID以识别用户,或根据JWT中的声明来授予特定的权限。
JWT的工作原理基于签名而不是加密,因此JWT的内容可以被查看,但不能被篡改。只有持有正确秘钥的人才能生成有效的签名,从而成功验证JWT并使用其中的信息。这使得JWT成为一种广泛用于身份验证和授权的机制。
- 作者:Kougami
- 链接:https://blog.kougami.cn/article/1519abad-2f1c-801f-9c38-e13e19b865b6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。