JWT令牌(JSON Web Token)是一种基于JSON的开放标准(RFC 7519),用于在网络应用之间安全地传递信息。它具有以下特点和用途:
特点
- 紧凑且安全:JWT是一个紧凑的字符串,适合在URL、POST参数或HTTP头部中传输。
- 自包含:JWT中包含了所有必要的信息,无需额外查询数据库即可验证用户身份。
- 可签名:JWT通过数字签名确保信息的完整性和真实性,防止篡改。
组成
JWT由三部分组成,每部分之间用点(.
)分隔:
- Header(头部):包含令牌的类型和签名算法,例如
{"alg": "HS256", "typ": "JWT"}
。 - Payload(有效载荷):包含声明信息,如用户身份、权限等。声明分为注册声明(如
iss
、exp
)、公共声明和私有声明。 - Signature(签名):通过对Header和Payload进行签名,确保令牌未被篡改。
用途
- 身份认证:用户登录后,服务器返回JWT,后续请求中携带JWT即可验证用户身份。
- 信息交换:JWT可用于在不同服务之间安全传递信息。
- 单点登录(SSO):JWT轻便且易于跨域使用,适合解决单点登录问题。
优势
- 无状态:服务器无需存储用户状态信息,降低了服务器负担。
- 易于扩展:可以通过自定义声明携带更多信息。
注意事项
- JWT本身是编码而非加密,因此不应存储敏感信息,除非对JWT进行加密。
- 由于JWT无法从服务器端直接撤销,需要合理设置过期时间。