JWT 解碼器:查看標頭、有效負載和到期時間
即時解碼 JSON Web Tokens (JWT)。在瀏覽器中安全地查看標頭 (header)、有效載荷 (payload) 和簽名 (signature)。
簽名
簽名驗證需要金鑰。
這個 JWT 解碼器如何解析權杖
一個 JSON Web Token 會將三個部分打包成一個字串:標頭、有效負載與簽章。這個解碼器會把編碼過的權杖拆成這三部分,將標頭與有效負載還原成可讀的 JSON,並取出演算法、簽發時間與到期時間,讓你不用寫任何程式碼就能檢視權杖內容。
標頭、有效負載與簽章
權杖以兩個句點分成三部分:標頭.有效負載.簽章。前兩部分是以 base64url 編碼的 JSON,因此解碼只是一種可逆的轉換,並不是解密。標頭記錄了簽章演算法,也就是 alg 欄位,例如 HS256 或 RS256,以及權杖類型。有效負載帶有各項聲明(claim):一個 subject 識別碼、應用程式自訂欄位,通常還有以 Unix 秒儲存的 iat(簽發時間)與 exp(到期時間)。簽章是根據標頭與有效負載計算出的加密值,要驗證它需要建立時所用的密鑰或私鑰,因此讀取權杖內容與驗證它是否為真,是兩件不同的事。有些權杖的 alg 設為 none,沒有簽章,只由標頭.有效負載兩部分組成;這個解碼器同樣接受這種較短的形式,並讓簽章欄位保持空白。base64url 和一般 base64 的差別在於,它用連字號和底線取代加號和斜線,而且通常省略作為填補用的等號,因此解碼前需要先把這些字元換回來,再以 JSON 解析。
實際範例
貼上一個像下面這樣的權杖,它會被拆成三段有顏色的部分,接著標頭與有效負載會以格式化的 JSON 顯示出來。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2OTM4NDc1NjAxIiwibmFtZSI6IkNoZW4gWWF0aW5nIiwiaWF0IjoxNjg5NTk1MjAwLCJleHAiOjE2OTczNzEyMDB9.99e4hKI98W0LXGuEdwz6x97HGIc
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "6938475601",
"name": "Chen Yating",
"iat": 1689595200,
"exp": 1697371200
}
Algorithm 徽章顯示的是從標頭讀到的 HS256。iat 的值對應 2023 年 7 月 17 日,exp 的值對應 2023 年 10 月 15 日;由於這個日期已經過去,Status 徽章會顯示 EXPIRED。這一切都不在伺服器上發生:解碼過程是在瀏覽器裡執行的,而且因為工具無法取得建立簽章所用的密鑰,它永遠不會去驗證簽章是否為真。