Java JSON Web Token,簡稱 JWT,是一種基于 JSON 的開放標準(RFC 7519)的認證和授權協議。JWT 主要用于兩個應用程序之間的身份驗證和授權,保證系統之間的安全通信。下面介紹 JWT 的幾個重要部分。
HEADER.Payload.Signature
JWT 由三部分組成:頭部(Header)、載荷(Payload)和簽名(Signature)。頭部和載荷使用 Base64Url 編碼,簽名由頭部、載荷、密鑰和簽名算法一起進行簽名。其中,頭部包含了簽名算法和 token 類型等信息,載荷包含了需要傳遞的信息,簽名用于驗證整個 token 是否被篡改。
{ "alg": "HS256", "typ": "JWT" }
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
頭部和載荷都可以自定義字段,通常使用“sub”來表示用戶信息,使用“exp”來表示過期時間。例如,上面的載荷表示用戶編號為 1234567890,用戶名為 John Doe,創建時間為 2018 年 1 月 18 日 15:17:02。
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
簽名使用指定的簽名算法和密鑰進行簽名,通常使用 HMAC-SHA256 算法,將頭部和載荷作為輸入,密鑰作為加鹽,生成簽名。整個 token 就是由頭部、載荷和簽名拼接而成的字符串。
Java JSON Web Token 在各個開發框架中都有相應的實現,如 Spring Security、Apache Shiro 等。使用 JWT 可以簡化系統間的鑒權流程,提高系統間的可信度。
下一篇vue打包會有緩存