相比于session,JWT无状态性,在集群后端系统中有明显优势。
什么是JWT
Json Web Token(JWT):JSON网络令牌,是为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准((RFC 7519)。JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式用于通信双方之间以 JSON 对象行使安全的传递信息。因为数字签名的存在,这些信息是可信的。
JWT的组成
JWT含有三个部分:
- 头部(header)
- 载荷(payload)
- 签证(signature)
头部(header)
头部一般有两部分信息:类型、加密的算法(通常使用HMAC SHA256)
一般采用Base64加密存储,明文格式如下:
{
"typ":"JWT",
"alg":"HS256"
}
载荷(payload)
一般用于存放一些有效信息:
- iss:该JWT的签发者
- sub:该JWT所面向的用户,如:openId
- aud:接收该JWT的一方,如:mobile
- exp(expires):过期时间,这里是一个Unit的时间戳
- iat(issued at):该JWT签发时间
签证(signature)
使用了对应加密算法(HMAC/SHA256)加密三部分后的数据,用于校验数据的准确性,避免被中途串改。
包含三部分信息:
- header(base64后的)