JSON Web Tokens 是什麼?它真的可以用來取代傳統的 session cookies 嗎? 本篇為研究 JWT 時所做的筆記。
JSON Web Token 縮寫為 JWT,唸作 jot,是一個 IETF 標準(RFC 7519),定義了不同的群體間可以精 簡且安全的方式交換資訊的方法,這些資訊是包裝在一個 JSON Object 裡面,因 而得名。這些資訊因為經過數位簽章所以可以被驗證是否為可信任的內容,簽章 的方式可以是單一密文(HMAC)或是公鑰私鑰系統(RSA)。
當使用者跟伺服器登錄之後,伺服器可以傳回一個 JSON Web Token,此 Token 可 以存在瀏覽器的 local storage 或是 cookie。
當使用者想要再次存取某些需要認證的資訊的時候,他們需要把這個 JWT 送回伺 服器,通常以 Authorization header 的形式,例如:
Authorization: Bearer <token>
這個方式對於伺服器來說相較於 session cookie 的方式輕量(stateless),因 為伺服器不需要保有相關 session 的訊息,只需要 JWT 內的資訊就可以確認該 使用者是否可以取用相關資源。
使用者認證後伺服器傳回一個 session ID,之後伺服器可以用此ID查訊使用者資訊
Browser 會自動把 cookie 包含在 header 裡面所以適合用來保護網頁的存取
Don’t use JWT for persistent, long-lived data.