JSON Web Token(JWT)是什么

JWT作为一个开放的标准(RFC 7519), 定义了一种简洁自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。 因为特定的数字签名,所以这些通信的信息能够被校验和信任。 JWT可以使用HMAC算法或者RSA的公钥私钥对进行签名。

让我们进一步的解释下关于JWT的定义:

简约(Compact): JWT通信中使用的数据量比较小,JWT可以通过URL、POST参数,或者直接在HTTP header进行传递。 并且,因为比较小的数据量,这也意味着传输速度会更加快速。

自包含(Self-contained): 负载(payload)中(可以)包含所需的所有用户部分的信息,可以避免对服务端数据库的多次查询。

什么时候应该使用JSON Web Tokens?

以下是JSON Web Tokens适用的一些场景:

认证鉴权(Authentication): 这是JWT最常用的场景,一旦用户成功登入,在随后的每次请求中都将会包含JWT信息。 通过JWT的验证机制后,将允许该用户访问路由(routes)、服务(services)以及该Token所允许的资源。由于JWT的开销非常小, 使得其可以轻松的在不同的域名中传递,所以目前在单点登录(Single Sign On)中有比较广泛的应用。

数据交换(Information Exchange):JSON Web Tokens是一种很好的安全传输方式,因为JWTs是可签名的- 例如基于使用公钥/私钥对,你可以确保请求的发送者是可信的。另外,因为参与签名是是头部信息(header)和负载信息(payload), 您可以可以验证内容是否被篡改。