JWT 解码器 / 编码器

即时解码分析JWT令牌,或生成签名JWT。完全在浏览器端处理。

所有处理均在您的浏览器中完成,数据不会发送到任何服务器。

什么是JWT(JSON Web Token)?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间以JSON对象的形式安全传输信息。它广泛用于Web应用程序的身份验证和信息交换。JWT是Base64URL编码的,并非加密,因此任何人都可以解码载荷。请勿在未加密的情况下将敏感信息存储在JWT中。

JWT结构

示例

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

HeaderPayloadSignature

Header

包含令牌类型(typ)和签名算法(alg,如HS256、RS256)。

Payload

包含声明(Claims)——用户信息及元数据,如过期时间(exp)、签发时间(iat)、主体(sub)等。

Signature

使用密钥对头部和载荷进行签名得到的值,用于验证令牌未被篡改。

标准声明

Claim标准声明
iss签发者
sub主体(用户ID)
aud接收方
exp过期时间
iat签发时间
nbf生效时间
jtiJWT 唯一标识

常见问题

JWT是加密的吗?
不是。标准JWT(JWS)只是签名,并未加密。载荷是Base64URL编码的,任何人都可以解码。请勿将密码等敏感信息放入JWT载荷中。
为什么验证签名需要密钥?
基于HMAC的签名(如HS256)使用共享密钥。没有密钥就无法验证签名是否真实。解码载荷和验证签名是两个不同的操作。
没有exp声明会怎样?
如果没有exp声明,令牌本身不会过期。服务器需要实现自己的撤销机制(如令牌黑名单)来使这类令牌失效。
HS256和RS256有什么区别?
HS256使用所有方共享的对称密钥。RS256使用非对称密钥对(私钥签名,公钥验证),更适合微服务和第三方验证场景。
JWT应该存储在哪里?
推荐使用HttpOnly Cookie,可防御XSS攻击。将JWT存储在localStorage虽然方便,但容易受到XSS攻击。
什么是Refresh Token?
Refresh Token是一个独立的长期令牌,用于在Access Token过期后无需重新登录即可获取新的Access Token。
粘贴的JWT会被发送到服务器吗?
不会。所有解码和编码操作完全在浏览器中通过JavaScript完成,不会向任何服务器传输数据。

相关工具