HiveSnap - Session-Cookies Vs. JWT Authentication - JWT 學習日記 - 004

剛開始學習使用有關 JWT 的 Authentication。

什麼是 JWT (JSON Web Token)?
HiveSnap - JWT (JSON Web Token) 學習日記 - 01

Basic session-based Authentication flow。
HiveSnap - JWT (JSON Web Token) 學習日記 - 02 - Basic session-based Authentication flow

Basic JWT-based Authentication flow。
HiveSnap - JWT (JSON Web Token) 學習日記 - 03 - Basic JWT-based Authentication flow


image.png
Source - Ben Awad

業界使用 session-cookie 模式已有很長時間了。例如在 Ruby on Rails 盛行的年代。

也因為時間夠長,在實施 Authentication 功能時,可以在線找到許多不同語言的解決方案。基本上不會怕在 Stackoverflow 上找不到需要的提示。

因此,在前期沒有External Module時在 App 上使用上 JWT-based 這樣的基於 Token 的 Authentication 相比,開發人員更容易傾向使用 session-based。

感謝 NodeJS 的興起。 有許多 Module/Library 為 NodeJs 開發人員提供了一種簡單得多的方法來設置基於 Token 的 Authentication。 如passport-jwt


Session-Cookies Vs. JWT Authentication

Scalable 擴展性

在現代Web應用程序中,尤其是在 react & vue 應用程序的興起中,由於 JWT token 存儲在客戶端,因此JWT token-based 的擴展性優於 session-based 的。

Session 使用 server memory 來存儲用戶數據,這在擴展服務器時給服務器增加了更多負擔,並當在有多位用戶同時間一齊訪問該應用程序會帶來許多不便。


Security 安全性

雖然只要有連線上網就是被惡意攻擊的可能,但在現時 JWT 使用 BASE64編碼,比起session-cookie 更有防護力。

不過在此也要說清楚,敏感或重要的資料,可以的話就不要在網上傳播了。


Cheers!