JWT Authentication with AngularJS 重點整理 (1)
一般 Session 的產生流程 (3:10)
- 瀏覽器發送一個 request 到 server,內含帳號跟密碼
- server 驗證帳密後,產生一組 Session ID,存在 Cookie 裡。
- 將存有 Session ID 的 cookie,回傳給瀏覽器。
- 瀏覽器在下次與 server 傳遞訊息時,每次都要帶這個 Cookie 給 server
Session 識別的問題(3:50)
- 難以理解,而且不含意義
- 增加資料庫的負擔
- Perception that cookies are inherently insecure
專有名詞介紹 (5:10)
- Authentication (n.) 驗證
- Authorization (n.) 授權
- Token
- JWT: 是一種 token 格式,常使用在 Outh2 協定的 access token 和 refresh token 流程。
JWT 結構 (6:55)
是一個經過 Base64-URL encoded 的字串
結構分三個部分
- Header
- Body(Claims)
- Cryptographic Signature 加密簽證
解開後的內容
範例
- iss: http://yourdomain.com
- exp: 60000
- sub: userId
- scope: api/buy
意義
- iss: 發佈者 (Issuer)
- exp: 效期,單位是毫秒 (Expiration Time)
- sub: 用戶 (Subject)
- scope: 作用域
發佈 JWT 流程 (11:05)
- 使用者經過驗證後,取得 Token
- 由你的 server 來製造 Token
- client 儲存 token,並在需要驗證的 request 使用它。
概述 JWT (12:15)
- 無狀態認證機制
- Token 具有作用域的概念
- 產生授權
- 決定區域性
因為影片實在太長,後面有點不太好理解,分兩篇慢慢看