理论
概念
JSON Web Token(JWT)是一个非常轻巧的规范(约定好的这么做)。这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。
原理
应用场景
1. 身份认证
这种场景下,用户完成登录,在接下来的每个请求中包含JWT,可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证。它的开销非常小,可以轻松的在不同域名(跨域)的系统中传递,是目前最流行的跨域认证解决方案。
2. 信息交换
在通信的双方之间使用JWT对数据进行编码是一种非常安全的方式,由于它的信息是经过签名的,可以确保发送者发送的信息是没有经过伪造的,但是谨记,不应该在载荷里面加入任何敏感的数据。
JWT的组成
一个JWT实际上就是一个字符串,它由三部分组成,头部(Header)、载荷(Payload)与签名(Signature)。
其结构看起来是这样的
Header.Payload.Signature
头部(Header)
Header包含两部分信息,alg指加密类型,可选值为HS256、RSA等等,typ=JWT为固定值,表示token的类型。
{
"alg": "HS256",
"typ": "JWT"
}
载荷(Payload)
Payload是指签名信息以及内容,一般包括iss (发行者),exp (过期时间),sub(用户信息),aud (接收者),以及其他信息需要传递的参数信息。谨记,不应该在 载荷 里面加入任何敏感的数据。
签名(Signature)
Signature则为对Header、Payload的签名。
将Header、Payload两个编码后的字符串都用.连接在一起。
实战
- json web token 个性邮件实战
- json web token 登录实战
参考链接:
JSON Web Token 入门教程
JSON Web Token - 在Web应用间安全地传递信息
系统安全-JWT(JSON Web Tokens)