跳至主要内容
检测到网络连接较慢
网络已恢复!
链接已复制!

JWT解码器与验证器

解码和验证JSON Web Token并进行签名验证

JWT令牌

JWT格式无效,JWT必须包含由点分隔的三个部分。 JWT解码失败,请检查令牌格式。 令牌中包含无效的JSON,请确认令牌格式正确。

觉得好用吗?

★ · 条评分
JWT(JSON Web Token)生成器用于创建安全令牌,用于Web应用和API的身份验证和授权。JWT是紧凑的、URL安全的令牌,包含有关用户或会话的编码信息。它们在现代Web开发中被广泛用于无状态身份验证。我们的免费JWT生成器完全在您的浏览器中运行,确保您的令牌在不向服务器发送数据的情况下安全生成。
  1. 1
    输入头部

    头部通常包含令牌类型(JWT)和签名算法。默认值通常已足够。

  2. 2
    输入载荷

    向载荷中添加声明(数据):用户ID、用户名、角色、过期时间或其他自定义声明。

  3. 3
    设置密钥

    输入用于签名令牌的密钥。请妥善保管此密钥——它用于验证令牌真实性。

  4. 4
    选择算法

    选择签名算法:HS256(HMAC)、RS256(RSA)或其他。HS256常用于对称密钥,RS256用于非对称密钥。

  5. 5
    生成令牌

    点击生成以创建JWT。令牌将以编码格式显示。

  6. 6
    解码令牌

    使用解码器验证令牌内容、检查过期时间或调试令牌问题。

  7. 7
    验证签名

    使用您的密钥验证令牌签名,确保令牌未被篡改。

  8. 8
    使用令牌

    在API请求中包含JWT(通常在Authorization头部中)以进行身份验证和授权。

JWT有什么用途?

JWT用于Web应用和API中的身份验证(证明身份)和授权(确定权限)。

JWT安全吗?

当使用强密钥、HTTPS和适当的过期时间正确实现时,JWT是安全的。切勿暴露密钥。

我应该在JWT中放什么信息?

包含用户ID、用户名、角色和过期时间。避免包含密码等敏感数据。保持载荷简洁以提升性能。

JWT应该有多长的有效期?

短期令牌(15分钟到1小时)更安全。对于较长会话使用刷新令牌。根据您的安全需求进行调整。

我可以在没有密钥的情况下解码JWT吗?

可以,JWT可以被解码以查看其内容,但您需要密钥来验证签名并确保真实性。

HS256和RS256有什么区别?

HS256使用共享密钥(对称)。RS256使用私钥/公钥对(非对称)。RS256更适合分布式系统。

JWT可以被撤销吗?

JWT是无状态的,因此无法直接撤销。可以使用短过期时间、维护黑名单或使用刷新令牌来实现撤销。

我应该在哪里存储JWT?

安全地存储JWT:在httpOnly Cookie中(最安全)、localStorage(安全性较低)或内存中。注意防范XSS漏洞。

如果我的JWT被盗了怎么办?

使用短过期时间、实现令牌刷新、监控可疑活动,并考虑IP验证等额外安全措施。

我可以将JWT用于API身份验证吗?

可以,JWT通常用于API身份验证。在Authorization请求头中包含令牌:「Bearer <token>」。

保持令牌有效期短暂

将访问令牌的有效期设置为15至30分钟,对于较长会话则使用刷新令牌。较短的有效期能够在令牌泄露时减少损失窗口。

始终使用HTTPS

切勿通过明文HTTP传输JWT。明文传输的令牌可能被截获并重放。在所有传输或接收令牌的地方强制使用HTTPS。

优先选择RS256而非HS256

使用非对称签名算法(RS256/ES256),使得只有持有私钥的服务器才能创建令牌,而任何持有公钥的人都可以验证。HS256与所有验证方共享密钥。

验证所有声明

在服务器端始终验证iss(签发者)、aud(受众)、exp(过期时间)和nbf(生效时间)声明。切勿在未完整验证的情况下信任令牌。

切勿在载荷中存储敏感数据

JWT载荷是Base64编码的,并非加密。任何人都可以解码并读取其内容。切勿在令牌声明中包含密码、信用卡号或其他敏感信息。

使用typ头部声明

设置typ头部以区分令牌类型(访问令牌与刷新令牌)。这可防止令牌混淆攻击,即将刷新令牌用作访问令牌。

实现令牌撤销机制

维护黑名单或使用短期令牌配合刷新轮换。没有撤销机制的情况下,已泄露的令牌在自然过期之前仍然有效。

将令牌存储在HttpOnly Cookie中

将JWT存储在httpOnly、Secure、SameSite的Cookie中,而不是localStorage。localStorage可以通过JavaScript访问,容易受到XSS攻击。httpOnly Cookie对脚本不可见,且会随请求自动发送。

实现刷新令牌轮换

在每次使用时轮换刷新令牌(刷新令牌轮换)。如果刷新令牌被盗并被使用,当合法用户尝试刷新时服务器能检测到重复使用,并可以使整个令牌家族失效。

使用可信赖的JWT库

请使用适合您编程语言的成熟JWT库(例如Node.js的jsonwebtoken、PHP的php-jwt),而不是自行编写解析和验证逻辑。自定义实现是常见的严重安全漏洞来源。

其他工具

探索 JaneX 的其他强大工具

在浏览器中打开
为获得最佳体验,请在您的默认浏览器中打开此页面
安装 JaneX
快速访问所有工具,支持离线使用
发现新版本