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。

JWT 是可以解碼的。
JJWT
JJWT 是基于 JWT 的一個實作。
- JJWT的目标是最容易使用和了解用于在JVM上建立和驗證JSON Web令牌(JWTs)的庫。
- JJWT是基于JWT、JWS、JWE、JWK和JWA RFC規範的Java實作。
- JJWT還添加了一些不屬于規範的便利擴充,比如JWT壓縮和索賠強制。