JWT生成器
使用自定义头部、载荷和密钥生成签名JWT令牌。支持HS256、RS256、ES256等算法。
什么是JWT?
JWT(JSON Web令牌,RFC 7519)是一种开放标准,用于在各方之间以紧凑的JSON对象形式安全传输信息。由三部分组成:Header.Payload.Signature,以点号分隔。
JWT有哪些常见用途?
JWT广泛用于身份认证(单点登录)、API授权和安全信息交换。用户登录后,服务器签发JWT,客户端在后续请求中携带该令牌以证明身份。
HS256、RS256和ES256该怎么选?
HS256使用共享密钥,速度最快,适合单服务应用。RS256使用RSA密钥对,适合多服务架构。ES256使用椭圆曲线密钥,安全性高且签名更短。
JWT的Claims是什么?
Claims是载荷中的声明信息。注册声明包括iss(签发者)、sub(主题)、exp(过期时间)、aud(接收方)。公共声明可在IANA注册。私有声明是双方约定的自定义字段。
如何验证JWT?
先解码头部获取算法,然后使用对应的密钥(HMAC用共享密钥,RSA/ECDSA用公钥)验证签名。还需检查exp、iss、aud等声明是否有效。
在浏览器中生成JWT安全吗?
安全,此工具使用Web Crypto API进行所有加密操作。密钥和令牌不会离开浏览器,不会发送到任何服务器。
编码和签名有什么区别?
编码(Base64)只是将数据转换为可传输格式,任何人都可解码。签名则创建密码学哈希,证明令牌未被篡改,且只有持有正确密钥才能验证。
JWT可以加密吗?
可以,JWE(JSON Web加密)对载荷内容加密,没有解密密钥就无法读取。标准JWT(JWS)只保证完整性,载荷内容对持有令牌的人是可读的。
JWT有哪些安全最佳实践?
始终设置较短的过期时间。HMAC使用强随机密钥。RSA/ECDSA妥善保管私钥。不要在载荷中放敏感数据,因为只是Base64编码。生产环境务必使用HTTPS。
JWT和Session认证有什么区别?
JWT是无状态的,服务器不存储会话数据,适合微服务和跨域场景。Session需要服务端存储但可即时撤销。JWT撤销需要额外机制如黑名单。
JWT适合做登出和会话管理吗?
JWT天生无状态,服务端登出需要额外措施如令牌黑名单,或使用短过期时间配合刷新令牌。建议使用短生命周期的访问令牌(如15分钟)配合较长的刷新令牌。
刷新令牌机制是如何工作的?
使用短生命周期的访问令牌(JWT)进行API调用,使用较长生命周期的刷新令牌获取新的访问令牌。当访问令牌过期时,客户端发送刷新令牌获取新JWT,无需重新登录。
"none"算法是什么?
"none"算法表示JWT未签名,不进行签名验证。仅应用于测试,未签名令牌可被任意篡改。许多库出于安全考虑默认禁用此算法。
JWT有大小限制吗?
JWT没有固定大小限制,但由于通常通过HTTP头部(Authorization)发送,应控制在4KB以内。载荷应尽量精简,只包含必要的声明。