JWT定义
- 概念:JWT是一种开放标准(RFC 7519),用于在网络上安全传输信息,常用于身份验证。
- 比喻:类似于电子通行证,包含用户身份信息,用于身份验证和享受服务。
JWT组成部分
- 头部(Header):包含生成JWT的信息和使用的算法类型。
- 载荷(Payload):包含传递的数据,如身份信息和其他数据,官方规定7个字段:
iss
:签发者sub
:主题aud
:接收者exp
:过期时间nbf
:生效时间iat
:签发时间jti
:JWT ID
- 签名(Signature):使用密钥对头部和载荷进行签名,确保信息完整性。
JWT工作原理
-
生成JWT
- 用户登录后,服务器验证用户信息,使用用户信息和密钥生成JWT字符串。
-
传输JWT
- JWT存储于客户端(如Cookie、LocalStorage等),随请求发送至服务器。
-
验证JWT
- 服务器接收JWT,解码获取头部、载荷和签名。
- 使用本地密钥和算法重新生成签名,与原签名比对验证JWT有效性。
- 检查载荷中的过期时间,确保Token有效。
JWT优势
- 无状态:无需服务器存储会话状态信息,简化系统扩展。
- 跨域支持:易于在不同域间传递,实现跨域授权。
- 适应微服务架构:满足无状态的认证和授权需求,适合服务独立部署和扩展。
- 自包含:包含认证、授权信息及其他声明,减少服务端资源依赖。
- 扩展性:可根据需求添加自定义声明和数据,提高灵活性。