JWT 和 JJWT 还傻傻的分不清吗
JWTs 是 JSON 对象的编码表示。JSON 对象由零或多个名称/值对组成,其中名称为字符串,值为任意 JSON 值。
JWT 有助于在 clear(例如在 URL 中)发送这样的信息,可以被信任为不可读(即加密的)、不可修改的(即签名)和 URL - safe(即 Base64 编码的)。
JSON Web Token (JWT) 作为一个开放的标准 (RFC 7519) 定义了一种简洁自包含的方法用于通信双方之间以 JSON 对象的形式安全的传递信息。因为有数字签名,所以这些通信的信息能够被校验和信任。
JWT 可以使用秘钥(secret)进行签名 (使用 HMAC 算法) 或使用 RSA 或 ECDSA 算法的公钥/私钥对(public/private key)。
尽管 JWT 可以在通讯的双方之间通过提供秘钥(secret)来进行签名,我们将会更多关注 **已签名(signed)**的 token。
通过签名的令牌可以验证其中数据的 完整性(integrity) ,而加密的令牌可以针对其他方 隐藏(hide) 申明。
当令牌(token)使用 公钥/私钥对(public/private key)进行签名的时候,只有持有私钥进行签名的一方是进行签名的。
JWT 定义了一个标准,JJWT 是 JWT 基于 Java 的一个实现。
如下图,我们返回的一个 JWT。
![](https://static001.geekbang.org/infoq/1f/1f7479a60498131143dd8360ea3ad642.png)
JWT 是可以解码的。
![](https://static001.geekbang.org/infoq/05/05842928efdc99fd7c3ddcb22dee908e.png)
JJWT
JJWT 是基于 JWT 的一个实现。
JJWT 很容易使用和理解。它被设计成一个以建筑为中心的流畅界面,隐藏了它的大部分复杂性。
JJWT 的目标是最容易使用和理解用于在 JVM 上创建和验证 JSON Web 令牌(JWTs)的库。
JJWT 是基于 JWT、JWS、JWE、JWK 和 JWA RFC 规范的 Java 实现。
JJWT 还添加了一些不属于规范的便利扩展,比如 JWT 压缩和索赔强制。
因为 JWT 的官方库不那么好用,那么 JJWT 就是一个目前用得比较多的实现 JWT 的库了。
如果在你的项目中需要使用 JWT,那么用 JJWT 就没有什么问题。
评论