JWT 實作範例,以 node.js 為例
Topal 近日發佈一篇以 node.js express 框架實作 JWT 的文章,好奇 JWT 如何運作的人可以看一下:
How to Use JWT and Node.js for Better App Security
談到認證(authentication), 現在通常會談到 2 種做法:
- Session Id
- JWT (JSON Web Token)
如果你只是個小小應用,其實傳統的 Session Id 就已經相當夠用,除了各大框架都內建之外,其資安防護手段也相當成熟,框架都會幫你做到好,原理就是後端伺服器透過檢查瀏覽器或 APP 所傳送的 Cookies 裡的 Session Id 就能夠做到基本的認證防護,不過代價是 Session 在 CORS 的架構下窒礙難行。 如果你的系統已經大到需要跨網域溝通(CORS)時,也許採用 JWT 為主的認證方式,反而會更為輕鬆, JWT 可以想像是由後端伺服器發行的 access token, 通常期效不會很長,任何與伺服器的溝通都要記得使用 JWT, 後端伺服器通常會在框架的 middleware 層進行驗證,因此如何驗證 JWT 並保護其不被盜用也是相當重要的資安議題。
採用 JWT 還有個好處,可以將一些「非機敏」的資料存在 JWT, 如此一來前端就不用什麼資料都得問後端,例如暱稱、頭像就能夠存在 JWT 之中,節省一些網路請求。