JWT全称JSON Web Token,是一个紧凑的,自包含的,安全的信息交换协议。JWT有很多方面的应用,例如权限认证,信息交换等。本文将简单介绍JWT登录权限认证的一个实例操作。
JWT组成
JWT由头部(Header),负载(Payload)和签名(Signature)三部分组成。其中头部包含了JWT的声明信息,例如签名所用的算法等。
{
"alg": "HS256",
"typ": "JWT"
}
负载部分是负责信息的承载,在通信过程中,我们将要交换的信息放置于负载部分。
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
签名部分是JWT安全的保障,在传输过程中,头部和负载部分会经过Base64编码在网络中明文传输,既然是明文,为了保障信息在传输过程中不被篡改。JWT会对编码之后的头部和负载进行一个消息签名。
Signature = HMACSHA256(header + "." + payload + secret)
经过签名之后的JWT保证了数据不会被劫持并篡改。其中secret极为重要,即使有人劫持了消息,在不知道secret的情况下,无法签名出一个有效的JWT。
JWT的形式
JWT由三部分组成:头部,负载和签名。最终的JWT字串可以呈现出这三部分